Android के लिए Google Maps API आपको कुछ आसान तरीके देता है, जिनकी मदद से आप अपने मैप में आकार जोड़कर उन्हें ऐप्लिकेशन के हिसाब से बना सकते हैं.
Polyline
कनेक्ट किए गए लाइन सेगमेंट की सीरीज़ होती है. इससे अपनी पसंद का कोई भी आकार बनाया जा सकता है. इसका इस्तेमाल मैप पर पाथ और रास्तों को मार्क करने के लिए किया जा सकता है.Polygon
एक ढका हुआ आकार होता है, जिसका इस्तेमाल मैप पर इलाकों को मार्क करने के लिए किया जा सकता है.Circle
, मैप पर बनाई गई पृथ्वी की सतह पर वृत्त का भौगोलिक रूप से सटीक प्रोजेक्शन है.
इन सभी आकारों के लिए, आप कई प्रॉपर्टी में बदलाव करके उनके लुक को पसंद के मुताबिक बना सकते हैं.
कोड सैंपल
इलाकों और रास्तों को दिखाने के लिए पॉलीगॉन और पॉलीलाइन जोड़ने से जुड़े ट्यूटोरियल में, एक सामान्य Android ऐप्लिकेशन के सभी कोड शामिल हैं.
इसके अलावा, GitHub पर ApiDemos डेटा स्टोर करने की जगह में, ऐसे नमूने शामिल हैं जो आकार और उनकी सुविधाओं के इस्तेमाल की जानकारी देते हैं:
- CircleDemoActivity (Java / Kotlin): सर्कल
- पॉलीगॉनDemoActivity (Java / Kotlin): पॉलीगॉन
- PolylineDemoActivity (Java / Kotlin): Polyline
पॉलीलाइन
Polyline
क्लास, मैप पर कनेक्ट किए गए लाइन सेगमेंट के सेट के बारे में बताती है. Polyline
ऑब्जेक्ट में LatLng
जगहों का एक सेट होता है और यह लाइन सेगमेंट की एक सीरीज़ बनाता है जो उन जगहों को ऑर्डर किए गए क्रम में जोड़ता है.
इस वीडियो में बताया गया है कि मैप पर रास्ता बनाने के लिए, पॉलीलाइन का इस्तेमाल करके उपयोगकर्ताओं को उनकी मंज़िल तक पहुंचने में कैसे मदद करें.
पॉलीलाइन बनाने के लिए, सबसे पहले PolylineOptions
ऑब्जेक्ट बनाएं और उसमें पॉइंट जोड़ें. पॉइंट, पृथ्वी की सतह पर मौजूद पॉइंट को दिखाते हैं और इन्हें LatLng
ऑब्जेक्ट के तौर पर दिखाया जाता है. लाइन सेगमेंट, पॉइंट के बीच उसी क्रम में खींचे जाते हैं जिस क्रम में उन्हें PolylineOptions
ऑब्जेक्ट में जोड़ा जाता है.
किसी PolylineOptions
ऑब्जेक्ट में पॉइंट जोड़ने के लिए, PolylineOptions.add()
को कॉल करें.
ध्यान दें कि इस तरीके में पैरामीटर की वैरिएबल संख्या होती है, ताकि आप एक बार में कई पॉइंट जोड़ सकें. अगर पॉइंट पहले से ही सूची में हैं, तो PolylineOptions.addAll(Iterable<LatLng>)
को भी कॉल किया जा सकता है.
इसके बाद, GoogleMap.addPolyline(PolylineOptions)
पर कॉल करके, मैप पर पॉलीलाइन जोड़ें. यह तरीका, Polyline
ऑब्जेक्ट को दिखाता है. इससे, बाद में पॉलीलाइन में बदलाव किया जा सकता है.
नीचे दिया गया कोड स्निपेट बताता है कि मैप में एक आयत कैसे जोड़ा जाता है:
Kotlin
// Instantiates a new Polyline object and adds points to define a rectangle val polylineOptions = PolylineOptions() .add(LatLng(37.35, -122.0)) .add(LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude .add(LatLng(37.45, -122.2)) // Same latitude, and 30km to the west .add(LatLng(37.35, -122.2)) // Same longitude, and 16km to the south .add(LatLng(37.35, -122.0)) // Closes the polyline. // Get back the mutable Polyline val polyline = map.addPolyline(polylineOptions)
Java
// Instantiates a new Polyline object and adds points to define a rectangle PolylineOptions polylineOptions = new PolylineOptions() .add(new LatLng(37.35, -122.0)) .add(new LatLng(37.45, -122.0)) // North of the previous point, but at the same longitude .add(new LatLng(37.45, -122.2)) // Same latitude, and 30km to the west .add(new LatLng(37.35, -122.2)) // Same longitude, and 16km to the south .add(new LatLng(37.35, -122.0)); // Closes the polyline. // Get back the mutable Polyline Polyline polyline = map.addPolyline(polylineOptions);
मैप पर रेक्टैंगल दिखता है, जैसा कि यहां दिखाया गया है:
पॉलीलाइन जोड़ने के बाद इसका आकार बदलने के लिए, Polyline.setPoints()
को कॉल करें और पॉलीलाइन के लिए पॉइंट की नई सूची दें.
पॉलीलाइन को मैप में जोड़ने से पहले और मैप में जोड़ने के बाद, दोनों ही स्थितियों में अपने हिसाब से बदलाव किया जा सकता है. ज़्यादा जानकारी के लिए, नीचे थीम को अपनी पसंद के मुताबिक बनाना सेक्शन देखें.
पॉलीलाइन कस्टमाइज़ेशन
पॉलीलाइन के लुक को पसंद के मुताबिक बनाने के कई तरीके हैं:
- कई रंगों वाली पॉलीलाइन, पॉलीलाइन सेगमेंट को अलग-अलग रंगों में सेट करती हैं.
- ग्रेडिएंट पॉलीलाइन, दो रंगों के ग्रेडिएंट का इस्तेमाल करके पॉलीलाइन को रंग देते हैं.
- स्टैंप किए गए पॉलीलाइन, दोहराए जाने वाले बिटमैप का इस्तेमाल करके पॉलीलाइन को स्टाइल करते हैं.
Polyline कस्टमाइज़ेशन का इस्तेमाल करने के लिए, आपको Android के लिए Maps SDK टूल का 18.1.0 या इसके बाद का वर्शन इस्तेमाल करना होगा. साथ ही, Android रेंडरर के लिए, Maps का सबसे नया SDK टूल इस्तेमाल करना होगा.
बहुरंगी पॉलीलाइन बनाना
आप स्पैन का इस्तेमाल करके, किसी पॉलीलाइन के अलग-अलग हिस्सों को अलग-अलग रंग दे सकते हैं. इसके लिए, StyleSpan
ऑब्जेक्ट बनाएं और addSpan()
या addSpans()
तरीकों का इस्तेमाल करके, उन्हें PolylineOptions
में जोड़ें. डिफ़ॉल्ट रूप से, कलेक्शन का हर आइटम, उससे जुड़े लाइन सेगमेंट का रंग सेट करेगा. नीचे दिए गए उदाहरण में, लाल और हरे रंग के सेगमेंट वाली पॉलीलाइन बनाने के लिए, सेगमेंट के रंग सेट करना दिखाया गया है:
Kotlin
val line = map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan(StyleSpan(Color.RED)) .addSpan(StyleSpan(Color.GREEN)) )
Java
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(new StyleSpan(Color.RED)) .addSpan(new StyleSpan(Color.GREEN)));
ग्रेडिएंट पॉलीलाइन बनाना
स्ट्रोक के शुरुआती और आखिरी के रंग तय करने के लिए, दो 32-बिट अल्फ़ा-रेड-ग्रीन-ब्लू (एआरजीबी) पूर्णांक तय करके ग्रेडिएंट तय किया जा सकता है. PolylineOptions.addSpan()
को कॉल करके इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें.
नीचे दिए गए उदाहरण में, वुडलैंड पार्क ज़ू से कर्कलैंड, वॉशिंगटन तक लाल से पीले रंग की ग्रेडिएंट वाली पॉलीलाइन बनाना दिखाया गया है.
Kotlin
val line = map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan( StyleSpan( StrokeStyle.gradientBuilder( Color.RED, Color.YELLOW ).build() ) ) )
Java
Polyline line = map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(new StyleSpan(StrokeStyle.gradientBuilder(Color.RED, Color.YELLOW).build())));
स्टैंप वाला पॉलीलाइन बनाना
आप किसी पॉलीलाइन के रूप को दोहराए जाने वाले बिटमैप टेक्स्चर पर सेट कर सकते हैं. ऐसा करने के लिए, TextureStyle
का StampStyle
बनाएं. इसके बाद, यहां दिखाए गए तरीके से PolylineOptions.addSpan()
को कॉल करके, इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें:
Kotlin
val stampStyle = TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build() val span = StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build()) map.addPolyline( PolylineOptions() .add(LatLng(47.6677146, -122.3470447), LatLng(47.6442757, -122.2814693)) .addSpan(span) )
Java
StampStyle stampStyle = TextureStyle.newBuilder(BitmapDescriptorFactory.fromResource(R.drawable.walking_dot)).build(); StyleSpan span = new StyleSpan(StrokeStyle.colorBuilder(Color.RED).stamp(stampStyle).build()); map.addPolyline(new PolylineOptions() .add(new LatLng(47.6677146,-122.3470447), new LatLng(47.6442757,-122.2814693)) .addSpan(span));
पॉलीलाइन इवेंट
डिफ़ॉल्ट रूप से, पॉलीलाइन पर क्लिक नहीं किया जा सकता. Polyline.setClickable(boolean)
पर कॉल करके, क्लिक करने की सुविधा को चालू और बंद किया जा सकता है.
क्लिक की जा सकने वाली पॉलीलाइन पर होने वाले इवेंट को सुनने के लिए, OnPolylineClickListener
का इस्तेमाल करें. इस लिसनर को मैप पर सेट करने के लिए,
GoogleMap.setOnPolylineClickListener(OnPolylineClickListener)
पर कॉल करें.
जब कोई उपयोगकर्ता किसी पॉलीलाइन पर क्लिक करता है, तो आपको onPolylineClick(Polyline)
कॉलबैक मिलेगा.
पॉलीगॉन
Polygon
ऑब्जेक्ट, Polyline
ऑब्जेक्ट से मिलते-जुलते होते हैं. इनमें, निर्देशांकों की सीरीज़ एक क्रम में होती है. हालांकि, पॉलीगॉन, ओपन-एंडेड होने के बजाय, बंद लूप के अंदर के इलाकों के बारे में बताने के लिए डिज़ाइन किए गए हैं. साथ ही, इनके अंदरूनी हिस्से में वैल्यू भरी हुई है.
मैप में Polygon
वैसे ही जोड़ा जा सकता है जैसे Polyline
जोड़ा जाता है. सबसे पहले, कोई PolygonOptions
ऑब्जेक्ट बनाएं
और उसमें कुछ पॉइंट जोड़ें. ये बिंदु बहुभुज की आउटलाइन बनाएंगे.
इसके बाद, GoogleMap.addPolygon(PolygonOptions)
को कॉल करके पॉलीगॉन को मैप में जोड़ें. इससे Polygon
ऑब्जेक्ट दिखेगा.
नीचे दिया गया कोड स्निपेट, मैप में एक रेक्टैंगल जोड़ता है.
Kotlin
// Instantiates a new Polygon object and adds points to define a rectangle val rectOptions = PolygonOptions() .add( LatLng(37.35, -122.0), LatLng(37.45, -122.0), LatLng(37.45, -122.2), LatLng(37.35, -122.2), LatLng(37.35, -122.0) ) // Get back the mutable Polygon val polygon = map.addPolygon(rectOptions)
Java
// Instantiates a new Polygon object and adds points to define a rectangle PolygonOptions polygonOptions = new PolygonOptions() .add(new LatLng(37.35, -122.0), new LatLng(37.45, -122.0), new LatLng(37.45, -122.2), new LatLng(37.35, -122.2), new LatLng(37.35, -122.0)); // Get back the mutable Polygon Polygon polygon = map.addPolygon(polygonOptions);
पॉलीगॉन जोड़ने के बाद इसका आकार बदलने के लिए, Polygon.setPoints()
को कॉल करें और पॉलीगॉन की आउटलाइन के लिए पॉइंट की नई सूची दें.
पॉलीगॉन को मैप में जोड़ने से पहले और मैप में जोड़े जाने के बाद, दोनों ही स्थितियों में, आपके पास पॉलीगॉन के लुक को अपनी पसंद के मुताबिक बनाने का विकल्प होता है. ज़्यादा जानकारी के लिए, नीचे थीम को अपनी पसंद के मुताबिक बनाना सेक्शन देखें.
पॉलीगॉन अपने आप पूरा होना
ऊपर दिए गए उदाहरण में मौजूद पॉलीगॉन में पांच निर्देशांक हैं, लेकिन ध्यान दें कि पहले और अंतिम निर्देशांक एक ही जगह हैं, जो लूप को परिभाषित करती है. हालांकि, व्यावहारिक तौर पर, पॉलीगॉन बंद क्षेत्रों को परिभाषित करते हैं, इसलिए आपको इस आखिरी निर्देशांक को तय करने की ज़रूरत नहीं है. अगर आखिरी निर्देशांक, पहले निर्देशांक से अलग है, तो API, पॉलीगॉन को अपने-आप "बंद" कर देगा. ऐसा, निर्देशांकों के क्रम के अंत में पहले निर्देशांक को जोड़कर किया जाएगा.
नीचे दिए गए दो पॉलीगॉन एक जैसे हैं और उनमें से हर के लिए polygon.getPoints()
को कॉल करने से सभी 4 पॉइंट मिलेंगे.
Kotlin
val polygon1 = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0), LatLng(0.0, 0.0) ) .strokeColor(Color.RED) .fillColor(Color.BLUE) ) val polygon2 = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0) ) .strokeColor(Color.RED) .fillColor(Color.BLUE) )
Java
Polygon polygon1 = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(0, 0)) .strokeColor(Color.RED) .fillColor(Color.BLUE)); Polygon polygon2 = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5)) .strokeColor(Color.RED) .fillColor(Color.BLUE));
खोखला बहुभुज बनाएं
एक Polygon
ऑब्जेक्ट में कई पाथ को जोड़कर मुश्किल आकार बनाया जा सकता है, जैसे कि भरे हुए रिंग या "डोनट" (जहां पॉलीगॉन के अंदर "आइलैंड" के रूप में) दिखते हैं. जटिल आकार हमेशा एक से ज़्यादा, आसान, पाथ का मिलकर बना होते हैं.
एक ही एरिया में दो पाथ होने चाहिए. दो क्षेत्रों में से बड़ा हिस्सा, भरने की जगह के बारे में बताता है. यह एक आसान पॉलीगॉन है, जिसमें कोई अतिरिक्त विकल्प नहीं होता.
इसके बाद, addHole()
तरीके पर कोई दूसरा पाथ पास करें. जब दूसरा, छोटा पाथ बड़े पाथ से पूरा भरा हुआ
होता है, तो यह ऐसा दिखेगा जैसे पॉलीगॉन का कोई हिस्सा हटा दिया गया हो. अगर छेद पॉलीगॉन की आउटलाइन को काटता हो, तो पॉलीगॉन बिना किसी फ़िल के रेंडर हो जाएगा.
नीचे दिया गया स्निपेट एक छोटे आयताकार छेद वाला एक रेक्टैंगल बनाएगा.
Kotlin
val hole = listOf( LatLng(1.0, 1.0), LatLng(1.0, 2.0), LatLng(2.0, 2.0), LatLng(2.0, 1.0), LatLng(1.0, 1.0) ) val hollowPolygon = map.addPolygon( PolygonOptions() .add( LatLng(0.0, 0.0), LatLng(0.0, 5.0), LatLng(3.0, 5.0), LatLng(3.0, 0.0), LatLng(0.0, 0.0) ) .addHole(hole) .fillColor(Color.BLUE) )
Java
List<LatLng> hole = Arrays.asList(new LatLng(1, 1), new LatLng(1, 2), new LatLng(2, 2), new LatLng(2, 1), new LatLng(1, 1)); Polygon hollowPolygon = map.addPolygon(new PolygonOptions() .add(new LatLng(0, 0), new LatLng(0, 5), new LatLng(3, 5), new LatLng(3, 0), new LatLng(0, 0)) .addHole(hole) .fillColor(Color.BLUE));
मैप पर खोखला पॉलीगॉन नीचे दिखाया गया है:
पॉलीगॉन इवेंट
डिफ़ॉल्ट रूप से, पॉलीगॉन क्लिक नहीं किए जा सकते. Polygon.setClickable(boolean)
पर कॉल करके, क्लिक करने की सुविधा को चालू और बंद किया जा सकता है.
क्लिक किए जा सकने वाले पॉलीगॉन पर इवेंट को सुनने के लिए, OnPolygonClickListener
का इस्तेमाल करें. इस लिसनर को मैप पर सेट करने के लिए,
GoogleMap.setOnPolygonClickListener(OnPolygonClickListener)
पर कॉल करें.
जब कोई उपयोगकर्ता पॉलीगॉन पर क्लिक करता है, तो आपको onPolygonClick(Polygon)
कॉलबैक मिलेगा.
सर्कल्स
सामान्य Polygon
क्लास के अलावा, Maps API में Circle
ऑब्जेक्ट के लिए खास क्लास भी शामिल हैं, ताकि इनके निर्माण को आसान बनाया जा सके.
सर्कल बनाने के लिए, आपको नीचे दी गई दो प्रॉपर्टी बतानी होंगी:
LatLng
के तौर परcenter
.radius
मीटर में.
इसके बाद, वृत्त को पृथ्वी की सतह पर मौजूद सभी बिंदुओं का समूह माना जाता है. ये बिंदु दिए गए center
से radius
मीटर दूर होते हैं. Maps API में इस्तेमाल किया जाने वाला मरकेटर प्रोजेक्शन सपाट सतह पर गोले को कैसे रेंडर करता है,
तो भूमध्य रेखा के करीब होने पर यह मैप पर करीब-करीब सही सर्कल के तौर पर दिखेगा. साथ ही, जैसे-जैसे वृत्त भूमध्य रेखा से दूर होगा, वह लगातार गैर-गोलाकार (स्क्रीन पर) दिखेगा.
सर्कल को जोड़ दिए जाने के बाद उसका आकार बदलने के लिए, आपके पास
Circle.setRadius()
या Circle.setCenter()
को कॉल करने और नई वैल्यू देने का विकल्प होता है.
सर्कल को मैप में जोड़ने से पहले और मैप में जोड़े जाने के बाद, दोनों ही स्थितियों में, सर्कल को दिखने के तरीके को अपनी पसंद के मुताबिक बनाया जा सकता है. ज़्यादा जानकारी के लिए, नीचे थीम को अपनी पसंद के मुताबिक बनाना सेक्शन देखें.
नीचे दिया गया कोड स्निपेट, CircleOptions
ऑब्जेक्ट बनाकर और GoogleMap.addCircle(CircleOptions)
को कॉल करके, मैप पर एक सर्कल जोड़ता है:
Kotlin
// Instantiates a new CircleOptions object and defines the center and radius val circleOptions = CircleOptions() .center(LatLng(37.4, -122.1)) .radius(1000.0) // In meters // Get back the mutable Circle val circle = map.addCircle(circleOptions)
Java
// Instantiates a new CircleOptions object and defines the center and radius CircleOptions circleOptions = new CircleOptions() .center(new LatLng(37.4, -122.1)) .radius(1000); // In meters // Get back the mutable Circle Circle circle = map.addCircle(circleOptions);
मंडली इवेंट
डिफ़ॉल्ट रूप से, सर्कल पर क्लिक नहीं किया जा सकता. क्लिक करने की सुविधा को चालू और बंद किया जा सकता है. इसके लिए, GoogleMap.addCircle()
को CircleOptions.clickable(boolean)
से कॉल करें या Circle.setClickable(boolean)
पर कॉल करें.
क्लिक किए जा सकने वाले सर्कल पर मौजूद इवेंट को सुनने के लिए, OnCircleClickListener
का इस्तेमाल करें. इस लिसनर को मैप पर सेट करने के लिए,
GoogleMap.setOnCircleClickListener(OnCircleClickListener)
पर कॉल करें.
जब कोई उपयोगकर्ता किसी सर्कल पर क्लिक करता है, तो आपको एक onCircleClick(Circle)
कॉलबैक मिलेगा, जैसा कि यहां दिए गए कोड सैंपल में दिखाया गया है:
Kotlin
val circle = map.addCircle( CircleOptions() .center(LatLng(37.4, -122.1)) .radius(1000.0) .strokeWidth(10f) .strokeColor(Color.GREEN) .fillColor(Color.argb(128, 255, 0, 0)) .clickable(true) ) map.setOnCircleClickListener { // Flip the r, g and b components of the circle's stroke color. val strokeColor = it.strokeColor xor 0x00ffffff it.strokeColor = strokeColor }
Java
Circle circle = map.addCircle(new CircleOptions() .center(new LatLng(37.4, -122.1)) .radius(1000) .strokeWidth(10) .strokeColor(Color.GREEN) .fillColor(Color.argb(128, 255, 0, 0)) .clickable(true)); map.setOnCircleClickListener(new GoogleMap.OnCircleClickListener() { @Override public void onCircleClick(Circle circle) { // Flip the r, g and b components of the circle's stroke color. int strokeColor = circle.getStrokeColor() ^ 0x00ffffff; circle.setStrokeColor(strokeColor); } });
लोगों का लुक पसंद के मुताबिक बनाना
मैप पर जोड़ने से पहले या मैप में जोड़े जाने के बाद, किसी आकार में बदलाव किया जा सकता है. ऐसा करने के लिए, विकल्प ऑब्जेक्ट में अपनी पसंद की प्रॉपर्टी तय करें. सभी प्रॉपर्टी के लिए गेटर भी दिखाए जाते हैं, ताकि आप आकार की मौजूदा स्थिति को आसानी से ऐक्सेस कर सकें.
नीचे दिए गए स्निपेट में एक मोटी नीले रंग की पॉलीलाइन है, जिसमें मेलबर्न से पर्थ तक के जियोडिसिक सेगमेंट हैं. नीचे दिए गए सेक्शन में इन प्रॉपर्टी के बारे में ज़्यादा जानकारी दी गई है.
Kotlin
val polyline = map.addPolyline( PolylineOptions() .add(LatLng(-37.81319, 144.96298), LatLng(-31.95285, 115.85734)) .width(25f) .color(Color.BLUE) .geodesic(true) )
Java
Polyline polyline = map.addPolyline(new PolylineOptions() .add(new LatLng(-37.81319, 144.96298), new LatLng(-31.95285, 115.85734)) .width(25) .color(Color.BLUE) .geodesic(true));
मैप इस तरह से दिखेगा:
ध्यान दें: इनमें से ज़्यादातर को, बताए गए किसी भी आकार पर लागू किया जा सकता है.हालांकि, ऐसा हो सकता है कि कुछ प्रॉपर्टी कुछ आकार के हिसाब से न हों. जैसे, पॉलीलाइन में फ़िल कलर नहीं है, क्योंकि उसके अंदर का हिस्सा नहीं है.
स्ट्रोक कलर
स्ट्रोक का रंग, 32-बिट का अल्फ़ा-लाल-हरा-नीला (ARGB) पूर्णांक होता है. इससे, आकार के स्ट्रोक की अपारदर्शिता और रंग के बारे में पता चलता है. *Options.strokeColor()
को (या
पॉलीलाइन के मामले में PolylineOptions.color()
) पर कॉल करके, इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें. अगर इसकी जानकारी नहीं दी गई है, तो
स्ट्रोक का डिफ़ॉल्ट रंग काला (Color.BLACK
) होता है.
मैप में आकार जोड़ने के बाद, getStrokeColor()
(या पॉलीलाइन के लिए getColor()
) को कॉल करके स्ट्रोक के रंग को ऐक्सेस किया जा सकता है और setStrokeColor()
(setColor() for a polyline
) को कॉल करके इसे बदला जा सकता है.
फ़िल कलर
फ़िल रंग केवल पॉलीगॉन और वृत्तों पर लागू होता है. यह पॉलीलाइन पर लागू नहीं होता, क्योंकि इनके अंदरूनी हिस्से को तय नहीं किया जाता. पॉलीगॉन के लिए, इसके छेदों के अंदर के क्षेत्र, पॉलीगॉन के अंदरूनी हिस्से का हिस्सा नहीं हैं और अगर फ़िल कलर सेट है, तो ये रंग नहीं होंगे.
भरने का रंग, 32-बिट का अल्फ़ा-लाल-हरा-नीला (ARGB) पूर्णांक होता है. इससे, आकार के अंदर की अपारदर्शिता और रंग के बारे में पता चलता है. *Options.fillColor()
को कॉल करके, इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें. अगर इसकी जानकारी नहीं दी गई है, तो
स्ट्रोक का डिफ़ॉल्ट रंग पारदर्शी होता है (Color.TRANSPARENT
).
आकार को मैप में जोड़ दिए जाने के बाद, भरने का रंग getFillColor()
को कॉल करके ऐक्सेस किया जा सकता है और setFillColor()
को कॉल करके इसे बदला जा सकता है.
स्ट्रोक की चौड़ाई
लाइन स्ट्रोक की चौड़ाई, पिक्सल (पिक्सल) में फ़्लोट के रूप में. मैप को ज़ूम करने पर, चौड़ाई कम नहीं होती. इसका मतलब है कि किसी आकार में, सभी ज़ूम लेवल पर स्ट्रोक की चौड़ाई
एक जैसी होगी. *Options.strokeWidth()
(या पॉलीलाइन के लिए PolylineOptions.width()
) पर कॉल करके, इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें. इसकी जानकारी न होने पर, डिफ़ॉल्ट स्ट्रोक 10 पिक्सल होता है.
मैप में आकार जोड़ दिए जाने के बाद, getStrokeWidth()
(या पॉलीलाइन के लिए getWidth()
) को कॉल करके स्ट्रोक की चौड़ाई को ऐक्सेस किया जा सकता है और setStrokeWidth()
(setWidth() for a polyline
) पर कॉल करके इसे बदला जा सकता है.
स्ट्रोक पैटर्न
डिफ़ॉल्ट स्ट्रोक पैटर्न, पॉलीलाइन के लिए एक ठोस लाइन होता है. साथ ही, यह पॉलीगॉन और सर्कल की आउटलाइन के लिए भी होता है. PatternItem
ऑब्जेक्ट के लिए, पसंद के मुताबिक स्ट्रोक पैटर्न तय किया जा सकता है, जहां हर आइटम के लिए डैश, डॉट या गैप हो.
नीचे दिया गया नमूना, पॉलीलाइन के पैटर्न को बिंदु के दोहराए गए क्रम पर सेट करता है. इसके बाद, 20 पिक्सल की लंबाई का एक डैश, 30 पिक्सल का डैश, और दूसरा 20 पिक्सल का अंतराल होता है.
Kotlin
val pattern = listOf( Dot(), Gap(20F), Dash(30F), Gap(20F) ) polyline.pattern = pattern
Java
List<PatternItem> pattern = Arrays.asList( new Dot(), new Gap(20), new Dash(30), new Gap(20)); polyline.setPattern(pattern);
यह पैटर्न लाइन के साथ-साथ दोहराया जाता है. पहली पैटर्न आइटम को, आकार के लिए तय किए गए पहले वर्टेक्स पर शुरू किया जाता है.
जॉइंट टाइप
पॉलीलाइन और पॉलीगॉन की आउटलाइन के लिए, डिफ़ॉल्ट फ़िक्स माइटर जॉइंट टाइप को बदलने के लिए, बेवल या राउंड JointType
तय किया जा सकता है.
नीचे दिया गया सैंपल, पॉलीलाइन पर एक गोल जोड़ पर लागू होता है:
Kotlin
polyline.jointType = JointType.ROUND
Java
polyline.setJointType(JointType.ROUND);
जॉइंट टाइप, लाइन के अंदरूनी मोड़ों पर असर डालता है. अगर लाइन में ऐसा स्ट्रोक पैटर्न है जिसमें डैश शामिल है, तो जॉइंट टाइप तब भी लागू होता है, जब डैश ने जोड़ को फैलाया हो. जोड़ों का टाइप, बिंदुओं पर असर नहीं डालता, क्योंकि वे हमेशा गोल होते हैं.
लाइन कैप
पॉलीलाइन के हर सिरे के लिए Cap
स्टाइल सेट की जा सकती है. इसके विकल्प
बट (डिफ़ॉल्ट), स्क्वेयर, राउंड या कस्टम बिटमैप होते हैं.
स्टाइल को PolylineOptions.startCap
और
PolylineOptions.endCap
पर सेट करें या गैटर और सेटर के सही तरीकों का इस्तेमाल करें.
नीचे दिया गया स्निपेट, पॉलीलाइन की शुरुआत में एक गोल कैप के बारे में बताता है.
Kotlin
polyline.startCap = RoundCap()
Java
polyline.setStartCap(new RoundCap());
नीचे दिया गया स्निपेट, एंड कैप के लिए कस्टम बिटमैप के बारे में बताता है:
Kotlin
polyline.endCap = CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16F)
Java
polyline.setEndCap( new CustomCap(BitmapDescriptorFactory.fromResource(R.drawable.arrow), 16));
कस्टम बिट मैप का इस्तेमाल करते समय, आपको रेफ़रंस स्ट्रोक की चौड़ाई पिक्सल में तय करनी चाहिए. इसके हिसाब से एपीआई, बिट मैप को स्केल करता है. रेफ़रंस स्ट्रोक की चौड़ाई, स्ट्रोक की वह चौड़ाई होती है जिसका इस्तेमाल आपने कैप के लिए बिट मैप इमेज को डिज़ाइन करते समय, इमेज के ओरिजनल डाइमेंशन पर किया था. डिफ़ॉल्ट रेफ़रंस स्ट्रोक की चौड़ाई 10 पिक्सल है. सलाह: रेफ़रंस स्ट्रोक की चौड़ाई तय करने के लिए, बिट मैप इमेज को किसी इमेज एडिटर में 100% ज़ूम इन पर खोलें. इसके बाद, इमेज के हिसाब से लाइन स्ट्रोक की चौड़ाई प्लॉट करें.
अगर बिट मैप बनाने के लिए BitmapDescriptorFactory.fromResource()
का इस्तेमाल किया जाता है, तो पक्का करें कि डेंसिटी-इंडिपेंडेंट रिसॉर्स (nodpi) का इस्तेमाल किया जा रहा हो.
भौगोलिक सेगमेंट
जियोडेसिक सेटिंग सिर्फ़ पॉलीलाइन और पॉलीगॉन पर लागू होती है. यह सर्कल पर लागू नहीं होता, क्योंकि उन्हें सेगमेंट के कलेक्शन के तौर पर नहीं दिखाया जाता.
जियोडिसिक सेटिंग से तय होता है कि पॉलीलाइन/पॉलीगॉन के क्रमागत शीर्षों के बीच लाइन सेगमेंट कैसे बनाए जाएंगे. जियोडेसिक सेगमेंट वे होते हैं जो पृथ्वी की सतह (स्फ़ीयर) के साथ-साथ, सबसे छोटे पाथ पर आते हैं. ये सेगमेंट अक्सर मैप पर घुमावदार लाइनों के तौर पर, मर्केटर प्रोजेक्शन के साथ दिखते हैं. मैप पर, नॉन-जियोडेसिक सेगमेंट को सीधी लाइन के तौर पर दिखाया जाता है.
इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करने के लिए,
*Options.geodesic()
को कॉल करें. यहां true
से पता चलता है कि सेगमेंट को जियोडिक्स के तौर पर बनाया जाना चाहिए. वहीं, false
से पता चलता है कि सेगमेंट को सीधी रेखाओं के तौर पर बनाया जाना चाहिए.
अगर इनकी जानकारी नहीं दी गई है, तो डिफ़ॉल्ट तौर पर नॉन-जियोडिक सेगमेंट (false
) डिफ़ॉल्ट तौर पर सेट होते हैं.
आकार को मैप में जोड़ दिए जाने के बाद, isGeodesic()
को कॉल करके जियोडिसिक सेटिंग को ऐक्सेस किया जा सकता है. साथ ही, setGeodesic()
पर कॉल करके इसे बदला जा सकता है.
Z-इंडेक्स
z-इंडेक्स मैप पर अन्य ओवरले (अन्य आकार, ग्राउंड ओवरले और टाइल ओवरले) के मुकाबले इस आकार के स्टैक क्रम को तय करता है. उच्च z-इंडेक्स वाला एक ओवरले कम z-इंडेक्स वाले ओवरले के ऊपर बनाया गया है. एक ही z-इंडेक्स वाले दो ओवरले, मनचाहे क्रम में बनाए जाते हैं.
ध्यान दें कि मार्कर हमेशा दूसरे ओवरले के ऊपर बनाए जाते हैं, भले ही दूसरे ओवरले का z-इंडेक्स कुछ भी हो.
*Options.zIndex()
को कॉल करके इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें.
इसकी वैल्यू न देने पर, डिफ़ॉल्ट z-इंडेक्स 0
होता है. मैप में आकार जोड़ने के बाद, getZIndex()
को कॉल करके z-इंडेक्स को ऐक्सेस किया जा सकता है और setZIndex()
को कॉल करके इसे बदला जा सकता है.
विज़िबिलिटी
विज़िबिलिटी यह बताती है कि मैप पर आकार बनाना चाहिए या नहीं, जहां
true
बताता है कि इसे बनाया जाना चाहिए और false
बताता है कि इसे नहीं बनाना चाहिए. इससे आप कुछ समय के लिए मैप पर आकार नहीं दिखा सकते. मैप से आकार को हमेशा के लिए हटाने के लिए, उस आकार पर remove()
को कॉल करें.
*Options.visible()
को कॉल करके, इस प्रॉपर्टी को आकार के विकल्प ऑब्जेक्ट पर सेट करें. अगर इसकी जानकारी नहीं दी गई है, तो डिफ़ॉल्ट तौर पर true
को दिखेगा.
आकार को मैप में जोड़ दिए जाने के बाद, isVisible()
को कॉल करके दृश्यता ऐक्सेस की जा सकती है और setVisible()
को कॉल करके उसे बदला जा सकता है.
डेटा को आकार से जोड़ें
आकार के setTag()
तरीके का इस्तेमाल करके, किसी आर्बिट्रेरी डेटा ऑब्जेक्ट को पॉलीलाइन, पॉलीगॉन या सर्कल के साथ स्टोर किया जा सकता है.
साथ ही, getTag()
का इस्तेमाल करके ऑब्जेक्ट को वापस लाया जा सकता है.
उदाहरण के लिए, पॉलीलाइन के साथ डेटा ऑब्जेक्ट को स्टोर करने के लिए Polyline.setTag()
को कॉल करें और डेटा ऑब्जेक्ट वापस पाने के लिए, Polyline.getTag()
को कॉल करें.
यहां दिया गया कोड, किसी खास पॉलीलाइन के लिए आर्बिट्रेरी टैग (A
) के बारे में बताता है:
Kotlin
val polyline = map.addPolyline( PolylineOptions() .clickable(true) .add( LatLng(-35.016, 143.321), LatLng(-34.747, 145.592), LatLng(-34.364, 147.891), LatLng(-33.501, 150.217), LatLng(-32.306, 149.248), LatLng(-32.491, 147.309) ) ) polyline.tag = "A"
Java
Polyline polyline = map.addPolyline((new PolylineOptions()) .clickable(true) .add(new LatLng(-35.016, 143.321), new LatLng(-34.747, 145.592), new LatLng(-34.364, 147.891), new LatLng(-33.501, 150.217), new LatLng(-32.306, 149.248), new LatLng(-32.491, 147.309))); polyline.setTag("A");
यहां उन स्थितियों के कुछ उदाहरण दिए गए हैं, जब आकार के साथ डेटा को स्टोर और फिर से हासिल करना ज़रूरी होता है:
- हो सकता है कि आपका ऐप्लिकेशन अलग-अलग तरह के आकार के लिए बना हो और आपको उपयोगकर्ताओं के क्लिक करने पर उन्हें अलग तरीके से दिखाना हो.
- आपको शायद कोई ऐसा सिस्टम दिख रहा हो जिसमें यूनीक रिकॉर्ड आइडेंटिफ़ायर होते हैं. इस सिस्टम में आकार, उस सिस्टम में खास रिकॉर्ड दिखाते हैं.
- आकार का डेटा, आकार के लिए z-इंडेक्स तय करने की प्राथमिकता को दिखा सकता है.