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-इंडेक्स तय किया जाए या नहीं.