Android के लिए Google Maps API, आपको कुछ आसान तरीके उपलब्ध कराता है, जिनकी मदद से अपने मैप में आकृतियां जोड़कर उन्हें अपने ऐप्लिकेशन के मुताबिक बनाया जा सकता है.
Polyline
कनेक्ट किए गए लाइन सेगमेंट की एक सीरीज़ होती है. यह आपकी पसंद का कोई भी आकार बना सकती है. साथ ही, इसका इस्तेमाल मैप पर पाथ और रास्तों को मार्क करने के लिए भी किया जा सकता है.Polygon
एक बंद आकार होता है, जिसका इस्तेमाल मैप पर जगहों को मार्क करने के लिए किया जा सकता है.Circle
, मैप पर बनाई गई पृथ्वी की सतह पर बने सर्कल का भौगोलिक रूप से सटीक प्रोजेक्शन है.
इन सभी आकृतियों के लिए, आप कई प्रॉपर्टी को बदलकर उनके रंग-रूप को कस्टमाइज़ कर सकते हैं.
कोड सैंपल
क्षेत्रों और रास्तों को दिखाने के लिए पॉलीगॉन और पॉलिलाइन जोड़ने पर ट्यूटोरियल. इसमें एक सामान्य Android ऐप्लिकेशन के सभी कोड शामिल हैं.
इसके अलावा, GitHub पर ApiDemos रिपॉज़िटरी में ऐसे सैंपल शामिल हैं जो आकार और उनकी सुविधाओं के इस्तेमाल को दिखाते हैं:
- CircleDemoActivity (Java / Kotlin): सर्कल
- पॉलीगॉनDemoActivity (Java / Kotlin): पॉलीगॉन
- PolylineDemoActivity (Java / Kotlin): Polyline
पॉलीलाइन
Polyline
क्लास, मैप पर कनेक्ट किए गए लाइन सेगमेंट के सेट के बारे में जानकारी देती है. Polyline
ऑब्जेक्ट में LatLng
जगहों का एक सेट होता है. यह लाइन सेगमेंट की एक सीरीज़ बनाता है, जो उन जगहों को ऑर्डर किए गए क्रम में जोड़ता है.
इस वीडियो में, पॉलीलाइन इस्तेमाल करके मैप पर पाथ बनाने के आइडिया दिए गए हैं.
Polyline बनाने के लिए, सबसे पहले 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()
को कॉल करें. साथ ही, पॉलीगॉन की आउटलाइन के लिए पॉइंट की नई सूची दें.
पॉलीगॉन को मैप में जोड़ने से पहले और मैप में जोड़ने के बाद, दोनों ही तरीकों से उसकी स्टाइल को पसंद के मुताबिक बनाया जा सकता है. ज़्यादा जानकारी के लिए, यहां दिया गया सेक्शन देखें. इसमें दिखने का तरीका पसंद के मुताबिक बनाना है.
पॉलीगॉन अपने-आप पूरा होना
ऊपर दिए गए उदाहरण में पॉलीगॉन में पांच निर्देशांक हैं, लेकिन ध्यान दें कि पहले और आखिरी निर्देशांक एक ही जगह हैं, जो लूप को परिभाषित करते हैं. हालांकि, पॉलीगॉन बंद इलाकों को परिभाषित करते हैं. इसलिए, आपको इस आखिरी कोऑर्डिनेट को तय करने की ज़रूरत नहीं है. अगर आखिरी निर्देशांक पहले से अलग है, तो एपीआई निर्देशांक के क्रम के आखिर में पहले निर्देशांक को जोड़कर, पॉलीगॉन को अपने-आप "बंद" कर देगा.
नीचे दिए गए दो पॉलीगॉन एक जैसे हैं और हर पॉलीगॉन के लिए
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
ऑब्जेक्ट के लिए भी खास क्लास शामिल होती हैं. इससे ऑब्जेक्ट को आसानी से बनाया जा सकता है.
एक सर्कल बनाने के लिए, आपको नीचे दी गई दो प्रॉपर्टी देनी होगी:
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-बिट ऐल्फ़ा-लाल-हरे-नीले (एआरजीबी) पूर्णांक होता है, जो आकार के स्ट्रोक की अपारदर्शिता और रंग को बताता है. *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-इंडेक्स
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-इंडेक्स तय करने को प्राथमिकता दे सकता है.