शेप्स

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

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

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

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

इन सभी आकृतियों के लिए, आप प्रॉपर्टी की संख्या.

कोड सैंपल

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

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

  • CircleDemoActivity (Java / Kotlin): सर्कल
  • पॉलीगॉनDemoActivity (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() का इस्तेमाल करके उन्हें PolylineOptions में जोड़ना या addSpans() तरीकों का इस्तेमाल करें. डिफ़ॉल्ट रूप से, कलेक्शन में मौजूद हर आइटम, कलर सेट करेगा लाइन सेगमेंट की वैल्यू दिखाता है. यहां दिए गए उदाहरण में, लाल और हरे सेगमेंट वाली पॉलीलाइन बनाने के लिए, सेगमेंट के रंग सेट करने का तरीका बताया गया है:

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

सर्कल्स

गोले के साथ मैप

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() को दबाकर उसे बदला जा सकता है.

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

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

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

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

      

यहां कुछ ऐसे उदाहरण दिए गए हैं जिनमें शेप की मदद से डेटा को स्टोर और फिर से पाना फ़ायदेमंद होता है:

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