शेप्स

प्लैटफ़ॉर्म चुनें: Android iOS JavaScript

ठोस लाल पॉलीलाइन वाला मैप

Android के लिए Google Maps API आपको कुछ आसान तरीके देता है, जिनकी मदद से आप अपने मैप में आकार जोड़कर उन्हें ऐप्लिकेशन के हिसाब से बना सकते हैं.

  • Polyline कनेक्ट किए गए लाइन सेगमेंट की सीरीज़ होती है. इससे अपनी पसंद का कोई भी आकार बनाया जा सकता है. इसका इस्तेमाल मैप पर पाथ और रास्तों को मार्क करने के लिए किया जा सकता है.
  • Polygon एक ढका हुआ आकार होता है, जिसका इस्तेमाल मैप पर इलाकों को मार्क करने के लिए किया जा सकता है.
  • Circle, मैप पर बनाई गई पृथ्वी की सतह पर वृत्त का भौगोलिक रूप से सटीक प्रोजेक्शन है.

इन सभी आकारों के लिए, आप कई प्रॉपर्टी में बदलाव करके उनके लुक को पसंद के मुताबिक बना सकते हैं.

कोड सैंपल

इलाकों और रास्तों को दिखाने के लिए पॉलीगॉन और पॉलीलाइन जोड़ने से जुड़े ट्यूटोरियल में, एक सामान्य Android ऐप्लिकेशन के सभी कोड शामिल हैं.

इसके अलावा, GitHub पर ApiDemos डेटा स्टोर करने की जगह में, ऐसे नमूने शामिल हैं जो आकार और उनकी सुविधाओं के इस्तेमाल की जानकारी देते हैं:

  • CircleDemoActivity (Java / Kotlin): सर्कल
  • पॉलीगॉनDemoActivity (Java / Kotlin): पॉलीगॉन
  • PolylineDemoActivity (Java / Kotlin): Polyline

पॉलीलाइन

Polyline क्लास, मैप पर कनेक्ट किए गए लाइन सेगमेंट के सेट के बारे में बताती है. Polyline ऑब्जेक्ट में LatLng जगहों का एक सेट होता है और यह लाइन सेगमेंट की एक सीरीज़ बनाता है जो उन जगहों को ऑर्डर किए गए क्रम में जोड़ता है.

इस वीडियो में बताया गया है कि मैप पर रास्ता बनाने के लिए, पॉलीलाइन का इस्तेमाल करके उपयोगकर्ताओं को उनकी मंज़िल तक पहुंचने में कैसे मदद करें.

पॉलीलाइन बनाने के लिए, सबसे पहले PolylineOptions ऑब्जेक्ट बनाएं और उसमें पॉइंट जोड़ें. पॉइंट, पृथ्वी की सतह पर मौजूद पॉइंट को दिखाते हैं और इन्हें LatLng ऑब्जेक्ट के तौर पर दिखाया जाता है. लाइन सेगमेंट, पॉइंट के बीच उसी क्रम में खींचे जाते हैं जिस क्रम में उन्हें PolylineOptions ऑब्जेक्ट में जोड़ा जाता है.

किसी PolylineOptions ऑब्जेक्ट में पॉइंट जोड़ने के लिए, PolylineOptions.add() को कॉल करें. ध्यान दें कि इस तरीके में पैरामीटर की वैरिएबल संख्या होती है, ताकि आप एक बार में कई पॉइंट जोड़ सकें. अगर पॉइंट पहले से ही सूची में हैं, तो PolylineOptions.addAll(Iterable<LatLng>) को भी कॉल किया जा सकता है.

इसके बाद, GoogleMap.addPolyline(PolylineOptions) पर कॉल करके, मैप पर पॉलीलाइन जोड़ें. यह तरीका, Polyline ऑब्जेक्ट को दिखाता है. इससे, बाद में पॉलीलाइन में बदलाव किया जा सकता है.

नीचे दिया गया कोड स्निपेट बताता है कि मैप में एक आयत कैसे जोड़ा जाता है:

Kotlin



// Instantiates a new Polyline object and adds points to define a rectangle
val polylineOptions = PolylineOptions()
    .add(LatLng(37.35, -122.0))
    .add(LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude
    .add(LatLng(37.45, -122.2)) // Same latitude, and 30km to the west
    .add(LatLng(37.35, -122.2)) // Same longitude, and 16km to the south
    .add(LatLng(37.35, -122.0)) // Closes the polyline.

// Get back the mutable Polyline
val polyline = map.addPolyline(polylineOptions)

      

Java


// Instantiates a new Polyline object and adds points to define a rectangle
PolylineOptions polylineOptions = new PolylineOptions()
    .add(new LatLng(37.35, -122.0))
    .add(new LatLng(37.45, -122.0))  // North of the previous point, but at the same longitude
    .add(new LatLng(37.45, -122.2))  // Same latitude, and 30km to the west
    .add(new LatLng(37.35, -122.2))  // Same longitude, and 16km to the south
    .add(new LatLng(37.35, -122.0)); // Closes the polyline.

// Get back the mutable Polyline
Polyline polyline = map.addPolyline(polylineOptions);

      

मैप पर रेक्टैंगल दिखता है, जैसा कि यहां दिखाया गया है:

आयताकार पॉलीलाइन वाला मैप

पॉलीलाइन जोड़ने के बाद इसका आकार बदलने के लिए, Polyline.setPoints() को कॉल करें और पॉलीलाइन के लिए पॉइंट की नई सूची दें.

पॉलीलाइन को मैप में जोड़ने से पहले और मैप में जोड़ने के बाद, दोनों ही स्थितियों में अपने हिसाब से बदलाव किया जा सकता है. ज़्यादा जानकारी के लिए, नीचे थीम को अपनी पसंद के मुताबिक बनाना सेक्शन देखें.

पॉलीलाइन कस्टमाइज़ेशन

पॉलीलाइन के लुक को पसंद के मुताबिक बनाने के कई तरीके हैं:

  • कई रंगों वाली पॉलीलाइन, पॉलीलाइन सेगमेंट को अलग-अलग रंगों में सेट करती हैं.
  • ग्रेडिएंट पॉलीलाइन, दो रंगों के ग्रेडिएंट का इस्तेमाल करके पॉलीलाइन को रंग देते हैं.
  • स्टैंप किए गए पॉलीलाइन, दोहराए जाने वाले बिटमैप का इस्तेमाल करके पॉलीलाइन को स्टाइल करते हैं.

Polyline कस्टमाइज़ेशन का इस्तेमाल करने के लिए, आपको Android के लिए Maps SDK टूल का 18.1.0 या इसके बाद का वर्शन इस्तेमाल करना होगा. साथ ही, Android रेंडरर के लिए, Maps का सबसे नया SDK टूल इस्तेमाल करना होगा.

बहुरंगी पॉलीलाइन बनाना

बहुरंगी पॉलीलाइन वाला मैप

आप स्पैन का इस्तेमाल करके, किसी पॉलीलाइन के अलग-अलग हिस्सों को अलग-अलग रंग दे सकते हैं. इसके लिए, StyleSpan ऑब्जेक्ट बनाएं और addSpan() या addSpans() तरीकों का इस्तेमाल करके, उन्हें PolylineOptions में जोड़ें. डिफ़ॉल्ट रूप से, कलेक्शन का हर आइटम, उससे जुड़े लाइन सेगमेंट का रंग सेट करेगा. नीचे दिए गए उदाहरण में, लाल और हरे रंग के सेगमेंट वाली पॉलीलाइन बनाने के लिए, सेगमेंट के रंग सेट करना दिखाया गया है:

Kotlin



val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(StyleSpan(Color.RED))
        .addSpan(StyleSpan(Color.GREEN))
)

      

Java


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(Color.RED))
        .addSpan(new StyleSpan(Color.GREEN)));

      

ग्रेडिएंट पॉलीलाइन बनाना

ग्रेडिएंट पॉलीलाइन वाला मैप

स्ट्रोक के शुरुआती और आखिरी के रंग तय करने के लिए, दो 32-बिट अल्फ़ा-रेड-ग्रीन-ब्लू (एआरजीबी) पूर्णांक तय करके ग्रेडिएंट तय किया जा सकता है. PolylineOptions.addSpan() को कॉल करके इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें. नीचे दिए गए उदाहरण में, वुडलैंड पार्क ज़ू से कर्कलैंड, वॉशिंगटन तक लाल से पीले रंग की ग्रेडिएंट वाली पॉलीलाइन बनाना दिखाया गया है.

Kotlin



val line = map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(
            StyleSpan(
                StrokeStyle.gradientBuilder(
                    Color.RED,
                    Color.YELLOW
                ).build()
            )
        )
)

      

Java


Polyline line = map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(new StyleSpan(StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW).build())));

      

स्टैंप वाला पॉलीलाइन बनाना

स्टैंप वाले पॉलीलाइन के साथ मैप करें

आप किसी पॉलीलाइन के रूप को दोहराए जाने वाले बिटमैप टेक्स्चर पर सेट कर सकते हैं. ऐसा करने के लिए, TextureStyle का StampStyle बनाएं. इसके बाद, यहां दिखाए गए तरीके से PolylineOptions.addSpan() को कॉल करके, इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें:

Kotlin



val stampStyle =
    TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build()
val span = StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build())
map.addPolyline(
    PolylineOptions()
        .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693))
        .addSpan(span)
)

      

Java


StampStyle stampStyle =
        TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build();
StyleSpan span = new StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build());
map.addPolyline(new PolylineOptions()
        .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693))
        .addSpan(span));

      

पॉलीलाइन इवेंट

डिफ़ॉल्ट रूप से, पॉलीलाइन पर क्लिक नहीं किया जा सकता. Polyline.setClickable(boolean) पर कॉल करके, क्लिक करने की सुविधा को चालू और बंद किया जा सकता है.

क्लिक की जा सकने वाली पॉलीलाइन पर होने वाले इवेंट को सुनने के लिए, OnPolylineClickListener का इस्तेमाल करें. इस लिसनर को मैप पर सेट करने के लिए, GoogleMap.setOnPolylineClickListener(OnPolylineClickListener) पर कॉल करें. जब कोई उपयोगकर्ता किसी पॉलीलाइन पर क्लिक करता है, तो आपको onPolylineClick(Polyline) कॉलबैक मिलेगा.

पॉलीगॉन

Polygon ऑब्जेक्ट, Polyline ऑब्जेक्ट से मिलते-जुलते होते हैं. इनमें, निर्देशांकों की सीरीज़ एक क्रम में होती है. हालांकि, पॉलीगॉन, ओपन-एंडेड होने के बजाय, बंद लूप के अंदर के इलाकों के बारे में बताने के लिए डिज़ाइन किए गए हैं. साथ ही, इनके अंदरूनी हिस्से में वैल्यू भरी हुई है.

मैप में Polygon वैसे ही जोड़ा जा सकता है जैसे Polyline जोड़ा जाता है. सबसे पहले, कोई PolygonOptions ऑब्जेक्ट बनाएं और उसमें कुछ पॉइंट जोड़ें. ये बिंदु बहुभुज की आउटलाइन बनाएंगे. इसके बाद, GoogleMap.addPolygon(PolygonOptions) को कॉल करके पॉलीगॉन को मैप में जोड़ें. इससे Polygon ऑब्जेक्ट दिखेगा.

नीचे दिया गया कोड स्निपेट, मैप में एक रेक्टैंगल जोड़ता है.

Kotlin



// Instantiates a new Polygon object and adds points to define a rectangle
val rectOptions = PolygonOptions()
    .add(
        LatLng(37.35, -122.0),
        LatLng(37.45, -122.0),
        LatLng(37.45, -122.2),
        LatLng(37.35, -122.2),
        LatLng(37.35, -122.0)
    )

// Get back the mutable Polygon
val polygon = map.addPolygon(rectOptions)

      

Java


// Instantiates a new Polygon object and adds points to define a rectangle
PolygonOptions polygonOptions = new PolygonOptions()
    .add(new LatLng(37.35, -122.0),
        new LatLng(37.45, -122.0),
        new LatLng(37.45, -122.2),
        new LatLng(37.35, -122.2),
        new LatLng(37.35, -122.0));

// Get back the mutable Polygon
Polygon polygon = map.addPolygon(polygonOptions);

      

पॉलीगॉन जोड़ने के बाद इसका आकार बदलने के लिए, Polygon.setPoints() को कॉल करें और पॉलीगॉन की आउटलाइन के लिए पॉइंट की नई सूची दें.

पॉलीगॉन को मैप में जोड़ने से पहले और मैप में जोड़े जाने के बाद, दोनों ही स्थितियों में, आपके पास पॉलीगॉन के लुक को अपनी पसंद के मुताबिक बनाने का विकल्प होता है. ज़्यादा जानकारी के लिए, नीचे थीम को अपनी पसंद के मुताबिक बनाना सेक्शन देखें.

पॉलीगॉन अपने आप पूरा होना

ऊपर दिए गए उदाहरण में मौजूद पॉलीगॉन में पांच निर्देशांक हैं, लेकिन ध्यान दें कि पहले और अंतिम निर्देशांक एक ही जगह हैं, जो लूप को परिभाषित करती है. हालांकि, व्यावहारिक तौर पर, पॉलीगॉन बंद क्षेत्रों को परिभाषित करते हैं, इसलिए आपको इस आखिरी निर्देशांक को तय करने की ज़रूरत नहीं है. अगर आखिरी निर्देशांक, पहले निर्देशांक से अलग है, तो API, पॉलीगॉन को अपने-आप "बंद" कर देगा. ऐसा, निर्देशांकों के क्रम के अंत में पहले निर्देशांक को जोड़कर किया जाएगा.

नीचे दिए गए दो पॉलीगॉन एक जैसे हैं और उनमें से हर के लिए polygon.getPoints() को कॉल करने से सभी 4 पॉइंट मिलेंगे.

Kotlin



val polygon1 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(0.0, 0.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)
val polygon2 = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0)
        )
        .strokeColor(Color.RED)
        .fillColor(Color.BLUE)
)

      

Java


Polygon polygon1 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(0, 0))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

Polygon polygon2 = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5))
    .strokeColor(Color.RED)
    .fillColor(Color.BLUE));

      

खोखला बहुभुज बनाएं

एक Polygon ऑब्जेक्ट में कई पाथ को जोड़कर मुश्किल आकार बनाया जा सकता है, जैसे कि भरे हुए रिंग या "डोनट" (जहां पॉलीगॉन के अंदर "आइलैंड" के रूप में) दिखते हैं. जटिल आकार हमेशा एक से ज़्यादा, आसान, पाथ का मिलकर बना होते हैं.

एक ही एरिया में दो पाथ होने चाहिए. दो क्षेत्रों में से बड़ा हिस्सा, भरने की जगह के बारे में बताता है. यह एक आसान पॉलीगॉन है, जिसमें कोई अतिरिक्त विकल्प नहीं होता. इसके बाद, addHole() तरीके पर कोई दूसरा पाथ पास करें. जब दूसरा, छोटा पाथ बड़े पाथ से पूरा भरा हुआ होता है, तो यह ऐसा दिखेगा जैसे पॉलीगॉन का कोई हिस्सा हटा दिया गया हो. अगर छेद पॉलीगॉन की आउटलाइन को काटता हो, तो पॉलीगॉन बिना किसी फ़िल के रेंडर हो जाएगा.

नीचे दिया गया स्निपेट एक छोटे आयताकार छेद वाला एक रेक्टैंगल बनाएगा.

Kotlin



val hole = listOf(
    LatLng(1.0, 1.0),
    LatLng(1.0, 2.0),
    LatLng(2.0, 2.0),
    LatLng(2.0, 1.0),
    LatLng(1.0, 1.0)
)
val hollowPolygon = map.addPolygon(
    PolygonOptions()
        .add(
            LatLng(0.0, 0.0),
            LatLng(0.0, 5.0),
            LatLng(3.0, 5.0),
            LatLng(3.0, 0.0),
            LatLng(0.0, 0.0)
        )
        .addHole(hole)
        .fillColor(Color.BLUE)
)

      

Java


List<LatLng> hole = Arrays.asList(new LatLng(1, 1),
    new LatLng(1, 2),
    new LatLng(2, 2),
    new LatLng(2, 1),
    new LatLng(1, 1));
Polygon hollowPolygon = map.addPolygon(new PolygonOptions()
    .add(new LatLng(0, 0),
        new LatLng(0, 5),
        new LatLng(3, 5),
        new LatLng(3, 0),
        new LatLng(0, 0))
    .addHole(hole)
    .fillColor(Color.BLUE));

      

मैप पर खोखला पॉलीगॉन नीचे दिखाया गया है:

खोखली आयत वाली पॉलीलाइन वाला मैप

पॉलीगॉन इवेंट

डिफ़ॉल्ट रूप से, पॉलीगॉन क्लिक नहीं किए जा सकते. Polygon.setClickable(boolean) पर कॉल करके, क्लिक करने की सुविधा को चालू और बंद किया जा सकता है.

क्लिक किए जा सकने वाले पॉलीगॉन पर इवेंट को सुनने के लिए, OnPolygonClickListener का इस्तेमाल करें. इस लिसनर को मैप पर सेट करने के लिए, GoogleMap.setOnPolygonClickListener(OnPolygonClickListener) पर कॉल करें. जब कोई उपयोगकर्ता पॉलीगॉन पर क्लिक करता है, तो आपको onPolygonClick(Polygon) कॉलबैक मिलेगा.

सर्कल्स

सर्कल वाला मैप

सामान्य Polygon क्लास के अलावा, Maps API में Circle ऑब्जेक्ट के लिए खास क्लास भी शामिल हैं, ताकि इनके निर्माण को आसान बनाया जा सके.

सर्कल बनाने के लिए, आपको नीचे दी गई दो प्रॉपर्टी बतानी होंगी:

  • LatLng के तौर पर center.
  • radius मीटर में.

इसके बाद, वृत्त को पृथ्वी की सतह पर मौजूद सभी बिंदुओं का समूह माना जाता है. ये बिंदु दिए गए center से radius मीटर दूर होते हैं. Maps API में इस्तेमाल किया जाने वाला मरकेटर प्रोजेक्शन सपाट सतह पर गोले को कैसे रेंडर करता है, तो भूमध्य रेखा के करीब होने पर यह मैप पर करीब-करीब सही सर्कल के तौर पर दिखेगा. साथ ही, जैसे-जैसे वृत्त भूमध्य रेखा से दूर होगा, वह लगातार गैर-गोलाकार (स्क्रीन पर) दिखेगा.

सर्कल को जोड़ दिए जाने के बाद उसका आकार बदलने के लिए, आपके पास Circle.setRadius() या Circle.setCenter() को कॉल करने और नई वैल्यू देने का विकल्प होता है.

सर्कल को मैप में जोड़ने से पहले और मैप में जोड़े जाने के बाद, दोनों ही स्थितियों में, सर्कल को दिखने के तरीके को अपनी पसंद के मुताबिक बनाया जा सकता है. ज़्यादा जानकारी के लिए, नीचे थीम को अपनी पसंद के मुताबिक बनाना सेक्शन देखें.

नीचे दिया गया कोड स्निपेट, CircleOptions ऑब्जेक्ट बनाकर और GoogleMap.addCircle(CircleOptions) को कॉल करके, मैप पर एक सर्कल जोड़ता है:

Kotlin



// Instantiates a new CircleOptions object and defines the center and radius
val circleOptions = CircleOptions()
    .center(LatLng(37.4, -122.1))
    .radius(1000.0) // In meters

// Get back the mutable Circle
val circle = map.addCircle(circleOptions)

      

Java


// Instantiates a new CircleOptions object and defines the center and radius
CircleOptions circleOptions = new CircleOptions()
    .center(new LatLng(37.4, -122.1))
    .radius(1000); // In meters

// Get back the mutable Circle
Circle circle = map.addCircle(circleOptions);

      

मंडली इवेंट

डिफ़ॉल्ट रूप से, सर्कल पर क्लिक नहीं किया जा सकता. क्लिक करने की सुविधा को चालू और बंद किया जा सकता है. इसके लिए, GoogleMap.addCircle() को CircleOptions.clickable(boolean) से कॉल करें या Circle.setClickable(boolean) पर कॉल करें.

क्लिक किए जा सकने वाले सर्कल पर मौजूद इवेंट को सुनने के लिए, OnCircleClickListener का इस्तेमाल करें. इस लिसनर को मैप पर सेट करने के लिए, GoogleMap.setOnCircleClickListener(OnCircleClickListener) पर कॉल करें.

जब कोई उपयोगकर्ता किसी सर्कल पर क्लिक करता है, तो आपको एक onCircleClick(Circle) कॉलबैक मिलेगा, जैसा कि यहां दिए गए कोड सैंपल में दिखाया गया है:

Kotlin



val circle = map.addCircle(
    CircleOptions()
        .center(LatLng(37.4, -122.1))
        .radius(1000.0)
        .strokeWidth(10f)
        .strokeColor(Color.GREEN)
        .fillColor(Color.argb(128, 255, 0, 0))
        .clickable(true)
)
map.setOnCircleClickListener {
    // Flip the r, g and b components of the circle's stroke color.
    val strokeColor = it.strokeColor xor 0x00ffffff
    it.strokeColor = strokeColor
}

      

Java


Circle circle = map.addCircle(new CircleOptions()
    .center(new LatLng(37.4, -122.1))
    .radius(1000)
    .strokeWidth(10)
    .strokeColor(Color.GREEN)
    .fillColor(Color.argb(128, 255, 0, 0))
    .clickable(true));

map.setOnCircleClickListener(new GoogleMap.OnCircleClickListener() {
    @Override
    public void onCircleClick(Circle circle) {
        // Flip the r, g and b components of the circle's stroke color.
        int strokeColor = circle.getStrokeColor() ^ 0x00ffffff;
        circle.setStrokeColor(strokeColor);
    }
});

      

लोगों का लुक पसंद के मुताबिक बनाना

मैप पर जोड़ने से पहले या मैप में जोड़े जाने के बाद, किसी आकार में बदलाव किया जा सकता है. ऐसा करने के लिए, विकल्प ऑब्जेक्ट में अपनी पसंद की प्रॉपर्टी तय करें. सभी प्रॉपर्टी के लिए गेटर भी दिखाए जाते हैं, ताकि आप आकार की मौजूदा स्थिति को आसानी से ऐक्सेस कर सकें.

नीचे दिए गए स्निपेट में एक मोटी नीले रंग की पॉलीलाइन है, जिसमें मेलबर्न से पर्थ तक के जियोडिसिक सेगमेंट हैं. नीचे दिए गए सेक्शन में इन प्रॉपर्टी के बारे में ज़्यादा जानकारी दी गई है.

Kotlin



val polyline = map.addPolyline(
    PolylineOptions()
        .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734))
        .width(25f)
        .color(Color.BLUE)
        .geodesic(true)
)

      

Java


Polyline polyline = map.addPolyline(new PolylineOptions()
    .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734))
    .width(25)
    .color(Color.BLUE)
    .geodesic(true));

      

मैप इस तरह से दिखेगा:

मेलबर्न से पर्थ तक पॉलीलाइन वाला मैप

ध्यान दें: इनमें से ज़्यादातर को, बताए गए किसी भी आकार पर लागू किया जा सकता है.हालांकि, ऐसा हो सकता है कि कुछ प्रॉपर्टी कुछ आकार के हिसाब से न हों. जैसे, पॉलीलाइन में फ़िल कलर नहीं है, क्योंकि उसके अंदर का हिस्सा नहीं है.

स्ट्रोक कलर

स्ट्रोक का रंग, 32-बिट का अल्फ़ा-लाल-हरा-नीला (ARGB) पूर्णांक होता है. इससे, आकार के स्ट्रोक की अपारदर्शिता और रंग के बारे में पता चलता है. *Options.strokeColor() को (या पॉलीलाइन के मामले में PolylineOptions.color()) पर कॉल करके, इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें. अगर इसकी जानकारी नहीं दी गई है, तो स्ट्रोक का डिफ़ॉल्ट रंग काला (Color.BLACK) होता है.

मैप में आकार जोड़ने के बाद, getStrokeColor() (या पॉलीलाइन के लिए getColor()) को कॉल करके स्ट्रोक के रंग को ऐक्सेस किया जा सकता है और setStrokeColor() (setColor() for a polyline) को कॉल करके इसे बदला जा सकता है.

फ़िल कलर

फ़िल रंग केवल पॉलीगॉन और वृत्तों पर लागू होता है. यह पॉलीलाइन पर लागू नहीं होता, क्योंकि इनके अंदरूनी हिस्से को तय नहीं किया जाता. पॉलीगॉन के लिए, इसके छेदों के अंदर के क्षेत्र, पॉलीगॉन के अंदरूनी हिस्से का हिस्सा नहीं हैं और अगर फ़िल कलर सेट है, तो ये रंग नहीं होंगे.

भरने का रंग, 32-बिट का अल्फ़ा-लाल-हरा-नीला (ARGB) पूर्णांक होता है. इससे, आकार के अंदर की अपारदर्शिता और रंग के बारे में पता चलता है. *Options.fillColor() को कॉल करके, इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें. अगर इसकी जानकारी नहीं दी गई है, तो स्ट्रोक का डिफ़ॉल्ट रंग पारदर्शी होता है (Color.TRANSPARENT).

आकार को मैप में जोड़ दिए जाने के बाद, भरने का रंग getFillColor() को कॉल करके ऐक्सेस किया जा सकता है और setFillColor() को कॉल करके इसे बदला जा सकता है.

स्ट्रोक की चौड़ाई

लाइन स्ट्रोक की चौड़ाई, पिक्सल (पिक्सल) में फ़्लोट के रूप में. मैप को ज़ूम करने पर, चौड़ाई कम नहीं होती. इसका मतलब है कि किसी आकार में, सभी ज़ूम लेवल पर स्ट्रोक की चौड़ाई एक जैसी होगी. *Options.strokeWidth() (या पॉलीलाइन के लिए PolylineOptions.width()) पर कॉल करके, इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें. इसकी जानकारी न होने पर, डिफ़ॉल्ट स्ट्रोक 10 पिक्सल होता है.

मैप में आकार जोड़ दिए जाने के बाद, getStrokeWidth() (या पॉलीलाइन के लिए getWidth()) को कॉल करके स्ट्रोक की चौड़ाई को ऐक्सेस किया जा सकता है और setStrokeWidth() (setWidth() for a polyline) पर कॉल करके इसे बदला जा सकता है.

स्ट्रोक पैटर्न

डिफ़ॉल्ट स्ट्रोक पैटर्न, पॉलीलाइन के लिए एक ठोस लाइन होता है. साथ ही, यह पॉलीगॉन और सर्कल की आउटलाइन के लिए भी होता है. PatternItem ऑब्जेक्ट के लिए, पसंद के मुताबिक स्ट्रोक पैटर्न तय किया जा सकता है, जहां हर आइटम के लिए डैश, डॉट या गैप हो.

नीचे दिया गया नमूना, पॉलीलाइन के पैटर्न को बिंदु के दोहराए गए क्रम पर सेट करता है. इसके बाद, 20 पिक्सल की लंबाई का एक डैश, 30 पिक्सल का डैश, और दूसरा 20 पिक्सल का अंतराल होता है.

Kotlin



val pattern = listOf(
    Dot(), Gap(20F), Dash(30F), Gap(20F)
)
polyline.pattern = pattern

      

Java


List<PatternItem> pattern = Arrays.asList(
    new Dot(), new Gap(20), new Dash(30), new Gap(20));
polyline.setPattern(pattern);

      

यह पैटर्न लाइन के साथ-साथ दोहराया जाता है. पहली पैटर्न आइटम को, आकार के लिए तय किए गए पहले वर्टेक्स पर शुरू किया जाता है.

जॉइंट टाइप

पॉलीलाइन और पॉलीगॉन की आउटलाइन के लिए, डिफ़ॉल्ट फ़िक्स माइटर जॉइंट टाइप को बदलने के लिए, बेवल या राउंड JointType तय किया जा सकता है.

नीचे दिया गया सैंपल, पॉलीलाइन पर एक गोल जोड़ पर लागू होता है:

Kotlin



polyline.jointType = JointType.ROUND

      

Java


polyline.setJointType(JointType.ROUND);

      

जॉइंट टाइप, लाइन के अंदरूनी मोड़ों पर असर डालता है. अगर लाइन में ऐसा स्ट्रोक पैटर्न है जिसमें डैश शामिल है, तो जॉइंट टाइप तब भी लागू होता है, जब डैश ने जोड़ को फैलाया हो. जोड़ों का टाइप, बिंदुओं पर असर नहीं डालता, क्योंकि वे हमेशा गोल होते हैं.

लाइन कैप

पॉलीलाइन के हर सिरे के लिए Cap स्टाइल सेट की जा सकती है. इसके विकल्प बट (डिफ़ॉल्ट), स्क्वेयर, राउंड या कस्टम बिटमैप होते हैं. स्टाइल को PolylineOptions.startCap और PolylineOptions.endCap पर सेट करें या गैटर और सेटर के सही तरीकों का इस्तेमाल करें.

नीचे दिया गया स्निपेट, पॉलीलाइन की शुरुआत में एक गोल कैप के बारे में बताता है.

Kotlin



polyline.startCap = RoundCap()

      

Java


polyline.setStartCap(new RoundCap());

      

नीचे दिया गया स्निपेट, एंड कैप के लिए कस्टम बिटमैप के बारे में बताता है:

Kotlin



polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)

      

Java


polyline.setEndCap(
    new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));

      

कस्टम बिट मैप का इस्तेमाल करते समय, आपको रेफ़रंस स्ट्रोक की चौड़ाई पिक्सल में तय करनी चाहिए. इसके हिसाब से एपीआई, बिट मैप को स्केल करता है. रेफ़रंस स्ट्रोक की चौड़ाई, स्ट्रोक की वह चौड़ाई होती है जिसका इस्तेमाल आपने कैप के लिए बिट मैप इमेज को डिज़ाइन करते समय, इमेज के ओरिजनल डाइमेंशन पर किया था. डिफ़ॉल्ट रेफ़रंस स्ट्रोक की चौड़ाई 10 पिक्सल है. सलाह: रेफ़रंस स्ट्रोक की चौड़ाई तय करने के लिए, बिट मैप इमेज को किसी इमेज एडिटर में 100% ज़ूम इन पर खोलें. इसके बाद, इमेज के हिसाब से लाइन स्ट्रोक की चौड़ाई प्लॉट करें.

अगर बिट मैप बनाने के लिए BitmapDescriptorFactory.fromResource() का इस्तेमाल किया जाता है, तो पक्का करें कि डेंसिटी-इंडिपेंडेंट रिसॉर्स (nodpi) का इस्तेमाल किया जा रहा हो.

भौगोलिक सेगमेंट

जियोडेसिक सेटिंग सिर्फ़ पॉलीलाइन और पॉलीगॉन पर लागू होती है. यह सर्कल पर लागू नहीं होता, क्योंकि उन्हें सेगमेंट के कलेक्शन के तौर पर नहीं दिखाया जाता.

जियोडिसिक सेटिंग से तय होता है कि पॉलीलाइन/पॉलीगॉन के क्रमागत शीर्षों के बीच लाइन सेगमेंट कैसे बनाए जाएंगे. जियोडेसिक सेगमेंट वे होते हैं जो पृथ्वी की सतह (स्फ़ीयर) के साथ-साथ, सबसे छोटे पाथ पर आते हैं. ये सेगमेंट अक्सर मैप पर घुमावदार लाइनों के तौर पर, मर्केटर प्रोजेक्शन के साथ दिखते हैं. मैप पर, नॉन-जियोडेसिक सेगमेंट को सीधी लाइन के तौर पर दिखाया जाता है.

इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करने के लिए, *Options.geodesic() को कॉल करें. यहां true से पता चलता है कि सेगमेंट को जियोडिक्स के तौर पर बनाया जाना चाहिए. वहीं, false से पता चलता है कि सेगमेंट को सीधी रेखाओं के तौर पर बनाया जाना चाहिए. अगर इनकी जानकारी नहीं दी गई है, तो डिफ़ॉल्ट तौर पर नॉन-जियोडिक सेगमेंट (false) डिफ़ॉल्ट तौर पर सेट होते हैं.

आकार को मैप में जोड़ दिए जाने के बाद, isGeodesic() को कॉल करके जियोडिसिक सेटिंग को ऐक्सेस किया जा सकता है. साथ ही, setGeodesic() पर कॉल करके इसे बदला जा सकता है.

Z-इंडेक्स

z-इंडेक्स मैप पर अन्य ओवरले (अन्य आकार, ग्राउंड ओवरले और टाइल ओवरले) के मुकाबले इस आकार के स्टैक क्रम को तय करता है. उच्च z-इंडेक्स वाला एक ओवरले कम z-इंडेक्स वाले ओवरले के ऊपर बनाया गया है. एक ही z-इंडेक्स वाले दो ओवरले, मनचाहे क्रम में बनाए जाते हैं.

ध्यान दें कि मार्कर हमेशा दूसरे ओवरले के ऊपर बनाए जाते हैं, भले ही दूसरे ओवरले का z-इंडेक्स कुछ भी हो.

*Options.zIndex() को कॉल करके इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें. इसकी वैल्यू न देने पर, डिफ़ॉल्ट z-इंडेक्स 0 होता है. मैप में आकार जोड़ने के बाद, getZIndex() को कॉल करके z-इंडेक्स को ऐक्सेस किया जा सकता है और setZIndex() को कॉल करके इसे बदला जा सकता है.

विज़िबिलिटी

विज़िबिलिटी यह बताती है कि मैप पर आकार बनाना चाहिए या नहीं, जहां true बताता है कि इसे बनाया जाना चाहिए और false बताता है कि इसे नहीं बनाना चाहिए. इससे आप कुछ समय के लिए मैप पर आकार नहीं दिखा सकते. मैप से आकार को हमेशा के लिए हटाने के लिए, उस आकार पर remove() को कॉल करें.

*Options.visible() को कॉल करके, इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें. अगर इसकी जानकारी नहीं दी गई है, तो डिफ़ॉल्ट तौर पर true को दिखेगा. आकार को मैप में जोड़ दिए जाने के बाद, isVisible() को कॉल करके दृश्यता ऐक्सेस की जा सकती है और setVisible() को कॉल करके उसे बदला जा सकता है.

डेटा को आकार से जोड़ें

आकार के setTag() तरीके का इस्तेमाल करके, किसी आर्बिट्रेरी डेटा ऑब्जेक्ट को पॉलीलाइन, पॉलीगॉन या सर्कल के साथ स्टोर किया जा सकता है. साथ ही, getTag() का इस्तेमाल करके ऑब्जेक्ट को वापस लाया जा सकता है. उदाहरण के लिए, पॉलीलाइन के साथ डेटा ऑब्जेक्ट को स्टोर करने के लिए Polyline.setTag() को कॉल करें और डेटा ऑब्जेक्ट वापस पाने के लिए, Polyline.getTag() को कॉल करें.

यहां दिया गया कोड, किसी खास पॉलीलाइन के लिए आर्बिट्रेरी टैग (A) के बारे में बताता है:

Kotlin



val polyline = map.addPolyline(
    PolylineOptions()
        .clickable(true)
        .add(
            LatLng(-35.016, 143.321),
            LatLng(-34.747, 145.592),
            LatLng(-34.364, 147.891),
            LatLng(-33.501, 150.217),
            LatLng(-32.306, 149.248),
            LatLng(-32.491, 147.309)
        )
)
polyline.tag = "A"

      

Java


Polyline polyline = map.addPolyline((new PolylineOptions())
    .clickable(true)
    .add(new LatLng(-35.016, 143.321),
        new LatLng(-34.747, 145.592),
        new LatLng(-34.364, 147.891),
        new LatLng(-33.501, 150.217),
        new LatLng(-32.306, 149.248),
        new LatLng(-32.491, 147.309)));

polyline.setTag("A");

      

यहां उन स्थितियों के कुछ उदाहरण दिए गए हैं, जब आकार के साथ डेटा को स्टोर और फिर से हासिल करना ज़रूरी होता है:

  • हो सकता है कि आपका ऐप्लिकेशन अलग-अलग तरह के आकार के लिए बना हो और आपको उपयोगकर्ताओं के क्लिक करने पर उन्हें अलग तरीके से दिखाना हो.
  • आपको शायद कोई ऐसा सिस्टम दिख रहा हो जिसमें यूनीक रिकॉर्ड आइडेंटिफ़ायर होते हैं. इस सिस्टम में आकार, उस सिस्टम में खास रिकॉर्ड दिखाते हैं.
  • आकार का डेटा, आकार के लिए z-इंडेक्स तय करने की प्राथमिकता को दिखा सकता है.