शेप्स

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.
प्लैटफ़ॉर्म चुनें: Android iOS JavaScript

पूरी तरह से लाल पॉलीलाइन के साथ मैप करें

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

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

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

कोड सैंपल

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

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

  • ScopeDemoActivity (Java / Kotlin): सर्कल
  • पॉलीगॉन डेमो गतिविधि (Java / Kotlin): पॉलीगॉन
  • PolylineDemoActivity (Java / Kotlin): पॉलीलाइन

पॉलीलाइन

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

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

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

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

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

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

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);

      

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)

      

आयत को मैप पर इस तरह दिखाया गया है:

आयत पॉलीलाइन के साथ मैप

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

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

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

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

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

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

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

बहुरंगी पॉलीलाइन के साथ मैप

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

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)));

      

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))
)

      

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

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

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

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())));

      

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()
            )
        )
)

      

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

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

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

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));

      

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)
)

      

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

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

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

पॉलीगॉन

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

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

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

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);

      

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)

      

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

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

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

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

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

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));

      

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)
)

      

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

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

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

नीचे दिया गया स्निपेट, एक छोटा आयत के साथ एक आयत बनाएगा.

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));

      

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)
)

      

खोखला बहुभुज मैप पर इस तरह दिखता है:

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

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

डिफ़ॉल्ट रूप से, पॉलीगॉन क्लिक नहीं किए जा सकते. आप 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) को कॉल करता है:

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);

      

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)

      

सर्कल के इवेंट

डिफ़ॉल्ट रूप से, सर्कल क्लिक नहीं किए जा सकते. आप क्लिक करने की क्षमता को चालू या बंद करने के लिए, CircleOptions.clickable(boolean) के साथ GoogleMap.addCircle() को कॉल करें या Circle.setClickable(boolean) पर कॉल करें.

क्लिक किए जा सकने वाले गोल आइकॉन पर क्लिक करने के लिए, OnCircleClickListener का इस्तेमाल करें. मैप पर इस पहचानकर्ता को सेट करने के लिए, GoogleMap.setOnCircleClickListener(OnCircleClickListener) पर कॉल करें.

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

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 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


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));

      

Kotlin


val polyline = map.addPolyline(
    PolylineOptions()
        .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734))
        .width(25f)
        .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 पिक्सल की दूरी वाला अंतर होता है.

Java


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

      

Kotlin


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

      

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

जॉइंट टाइप

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

यह सैंपल, पॉलीलाइन पर गोल जॉइंट टाइप लागू करता है:

Java


polyline.setJointType(JointType.ROUND);

      

Kotlin


polyline.jointType = JointType.ROUND

      

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

लाइन कैप

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

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

Java


polyline.setStartCap(new RoundCap());

      

Kotlin


polyline.startCap = RoundCap()

      

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

Java


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

      

Kotlin


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

      

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

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

जियोडेसिक सेगमेंट

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

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

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

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

Z-इंडेक्स

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

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

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

किसे दिखे

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

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

डेटा को किसी आकार से जोड़ना

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

नीचे दिया गया कोड किसी खास पॉलीलाइन के लिए, आर्बिट्ररी टैग (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");

      

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"

      

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

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