शेप्स

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

मैप पर लाल रंग की सॉलिड पॉलीलाइन

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

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

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

कोड सैंपल

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

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

  • CircleDemoActivity (Java / Kotlin): सर्कल
  • PolygonDemoActivity (Java / Kotlin): पॉलीगॉन
  • PolylineDemoActivity (Java / Kotlin): पॉलीलाइन

पॉलीलाइन

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() को कॉल करें और पॉलीलाइन के लिए पॉइंट की नई सूची दें.

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

पॉलीलाइन को पसंद के मुताबिक बनाना

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

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

पॉलीलाइन को पसंद के मुताबिक बनाने की सुविधा का इस्तेमाल करने के लिए, आपके पास Maps SDK for Android का 18.1.0 या इसके बाद का वर्शन होना चाहिए. साथ ही, Maps SDK for Android के नए रेंडरर का इस्तेमाल करना चाहिए.

कई रंगों वाली पॉलीलाइन बनाना

कई रंगों वाली पॉलीलाइन वाला मैप

किसी पॉलीलाइन के सेगमेंट को अलग-अलग रंग देने के लिए, स्पैन का इस्तेमाल किया जा सकता है. इसके लिए, 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-बिट अल्फा-रेड-ग्रीन-ब्लू (ARGB) इंटिजर तय करके, ग्रेडिएंट तय किया जा सकता है. PolylineOptions.addSpan() को कॉल करके, इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें. यहां दिए गए उदाहरण में, वुडलैंड पार्क चिड़ियाघर से Kirkland, WA तक लाल से पीले रंग के ग्रेडिएंट वाली पॉलीलाइन बनाने का तरीका बताया गया है.

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() को कॉल करें और पॉलीगॉन की आउटलाइन के लिए पॉइंट की नई सूची दें.

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

पॉलीगॉन के लिए अपने-आप पूरा होने की सुविधा

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

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

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) कॉलबैक मिलेगा.

सर्कल्स

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

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

सर्कल बनाने के लिए, आपको इन दो प्रॉपर्टी की जानकारी देनी होगी:

  • center के तौर पर LatLng.
  • 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-बिट ऐल्फ़ा-लाल-हरा-नीला (एआरजीबी) इंटिजर होता है. इससे आकार के स्ट्रोक की ऑपैसिटी और रंग के बारे में पता चलता है. *Options.strokeColor() (या पॉलीलाइन के मामले में PolylineOptions.color()) को कॉल करके, इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें. अगर कोई रंग तय नहीं किया गया है, तो डिफ़ॉल्ट रूप से स्ट्रोक का रंग काला (Color.BLACK) होता है.

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

रंग भरें

भरने का रंग सिर्फ़ पॉलीगॉन और सर्कल पर लागू होता है. यह पॉलीलाइन पर लागू नहीं होता, क्योंकि इनमें अंदरूनी हिस्से तय नहीं होते. पॉलीगॉन के लिए, उसके होल के अंदर मौजूद क्षेत्र, पॉलीगॉन के अंदरूनी हिस्से का हिस्सा नहीं होते. अगर पॉलीगॉन के लिए कोई भरण रंग सेट किया जाता है, तो उन क्षेत्रों को रंग नहीं दिया जाएगा.

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

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

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

लाइन स्ट्रोक की चौड़ाई, पिक्सल (px) में फ़्लोट के तौर पर. नक्शे को ज़ूम करने पर, चौड़ाई में बदलाव नहीं होता. इसका मतलब है कि किसी आकार के सभी ज़ूम लेवल पर, स्ट्रोक की चौड़ाई एक जैसी होगी. *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-index

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

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

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