किसी फ़ीचर लेयर में बाउंड्री पॉलीगॉन के लिए, स्ट्रोक और फ़िल के स्टाइल लागू करने के लिए:
FeatureLayer.StyleFactoryइंटरफ़ेस लागू करने वाला स्टाइल फ़ैक्ट्री फ़ंक्शन बनाएं. यह फ़ंक्शन, किसी फ़ीचर लेयर के लिए स्टाइलिंग लॉजिक तय करता है.स्टाइल फ़ैक्ट्री फ़ंक्शन को फ़ीचर लेयर पर लागू करने के लिए, Call
FeatureLayer.setFeatureStyle()का इस्तेमाल करें.
यहां दिए गए उदाहरण मैप में, इलाके की सुविधा वाली लेयर में किसी एक इलाके के लिए बाउंड्री पॉलीगॉन को हाइलाइट करने का तरीका दिखाया गया है.
स्टाइल फ़ैक्ट्री फ़ंक्शन बनाना
स्टाइल फ़ैक्ट्री फ़ंक्शन, फ़ीचर लेयर पर सेट किए जाने के समय, उस फ़ीचर लेयर के हर पॉलीगॉन पर लागू होता है. इस फ़ंक्शन को एक FeatureStyle ऑब्जेक्ट दिखाना होगा. इससे यह पता चलेगा कि पॉलीगॉन को कैसे स्टाइल करना है.
Android के लिए Maps SDK, स्टाइल फ़ैक्ट्री फ़ंक्शन को Feature इंस्टेंस पास करता है. Feature इंस्टेंस, सुविधा के मेटाडेटा को दिखाता है. इससे आपको स्टाइल फ़ैक्ट्री फ़ंक्शन में मेटाडेटा का ऐक्सेस मिलता है.
स्टाइल फ़ैक्ट्री फ़ंक्शन लागू होने पर, हमेशा एक जैसे नतीजे मिलने चाहिए. उदाहरण के लिए, अगर आपको सुविधाओं के किसी सेट में रैंडम तरीके से रंग भरना है, तो रैंडम हिस्सा, सुविधा स्टाइल फ़ंक्शन में नहीं होना चाहिए. ऐसा करने से, अनचाहे नतीजे मिल सकते हैं.
यह फ़ंक्शन, लेयर की हर सुविधा पर काम करता है. इसलिए, इसे ऑप्टिमाइज़ करना ज़रूरी है. रेंडरिंग में लगने वाले समय पर असर पड़ने से बचने के लिए:
सिर्फ़ उन फ़ीचर लेयर को चालू करें जिनकी आपको ज़रूरत है.
जब किसी सुविधा वाली लेयर का इस्तेमाल नहीं किया जा रहा हो, तब
FeatureLayer.setFeatureStyle(null)को कॉल करें.
पॉलीगॉन का स्ट्रोक और फ़िल सेट करना
स्टाइल फ़ैक्ट्री फ़ंक्शन में बाउंड्री पॉलीगॉन को स्टाइल करते समय, ये सेट किए जा सकते हैं:
एआरजीबी कलर फ़ॉर्मैट में पॉलीगॉन बॉर्डर का स्ट्रोक कलर और ओपैसिटी. इसे
Colorक्लास के ज़रिए तय किया जाता है. डिफ़ॉल्ट वैल्यू पारदर्शी (0x00000000) होती है.स्क्रीन पिक्सल में पॉलीगॉन बॉर्डर की स्ट्रोक की चौड़ाई. डिफ़ॉल्ट वैल्यू 2 है.
Colorक्लास के हिसाब से, ARGB कलर फ़ॉर्मैट में पॉलीगॉन के रंग और अपारदर्शिता. डिफ़ॉल्ट वैल्यू पारदर्शी (0x00000000) होती है.
जगह के आईडी ढूंढना, ताकि टारगेट करने की सुविधाओं का इस्तेमाल किया जा सके
कई ऐप्लिकेशन, सुविधा की जगह के हिसाब से किसी सुविधा पर स्टाइल लागू करते हैं. उदाहरण के लिए, हो सकता है कि आपको अलग-अलग देशों, इलाकों या क्षेत्रों के लिए स्टाइलिंग लागू करनी हो. सुविधा की जगह की जानकारी को जगह के आईडी से दिखाया जाता है.
जगह के आईडी, Google Places के डेटाबेस और Google Maps में किसी जगह की अलग पहचान के लिए इस्तेमाल होते हैं. किसी जगह का आईडी पाने के लिए:
- Places API और Geocoding का इस्तेमाल करें. इससे आपको नाम के हिसाब से क्षेत्रों को खोजने और तय की गई सीमाओं के अंदर मौजूद क्षेत्रों के लिए जगह के आईडी पाने में मदद मिलेगी.
- क्लिक इवेंट से डेटा पाना. इससे क्लिक किए गए इलाके की सुविधा मिलती है. इससे जगह के आईडी और सुविधा के टाइप की कैटगरी को ऐक्सेस किया जा सकता है.
कवरेज, इलाके के हिसाब से अलग-अलग होता है. ज़्यादा जानकारी के लिए, Google की सीमाओं का कवरेज देखें.
भौगोलिक नामों की जानकारी कई सोर्स से मिलती है. जैसे, USGS Board on Geographic Names और U.S. Gazetteer Files.
जगह का आईडी पाने के लिए, PlaceFeature का इस्तेमाल करना
PlaceFeature क्लास, Feature क्लास की सबक्लास है.
यह जगह की सुविधा (जगह के आईडी वाली सुविधा) को दिखाता है. इसमें ADMINISTRATIVE_AREA_LEVEL_1, ADMINISTRATIVE_AREA_LEVEL_2, COUNTRY, LOCALITY, POSTAL_CODE, और SCHOOL_DISTRICT टाइप की सुविधाएं शामिल होती हैं.
जगह का आईडी उपलब्ध होने पर, Maps SDK for Android, स्टाइल फ़ैक्ट्री फ़ंक्शन को PlaceFeature का एक इंस्टेंस पास करता है, ताकि सुविधा की जगह का पता लगाया जा सके.
स्टाइल फ़ैक्ट्री का उदाहरण
इस उदाहरण में, Locality फ़ीचर लेयर में मौजूद किसी पॉलीगॉन पर स्टाइल फ़ैक्ट्री फ़ंक्शन लागू किया गया है. स्टाइल फ़ैक्ट्री फ़ंक्शन, PlaceFeature इंस्टेंस का इस्तेमाल करके, सुविधा के प्लेस आईडी का पता लगाता है. अगर जगह का आईडी हवाई के हाना का है, तो फ़ंक्शन पॉलीगॉन पर कस्टम फ़िल और स्ट्रोक स्टाइल लागू करता है:
अगर आपने अब तक ऐसा नहीं किया है, तो नया मैप आईडी और मैप स्टाइल बनाने के लिए, शुरू करें में दिया गया तरीका अपनाएं. पक्का करें कि इलाके की सुविधा वाली लेयर चालू हो.
मैप के शुरू होने पर, इलाके की सुविधा वाली लेयर का रेफ़रंस पाएं.
Java
private FeatureLayer localityLayer;
@Override public void onMapReady(GoogleMap map) { // Get the LOCALITY feature layer. localityLayer = map.getFeatureLayer(new FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build());
// Apply style factory function to LOCALITY layer. styleLocalityLayer(); }Kotlin
private var localityLayer: FeatureLayer? = null
override fun onMapReady(googleMap: GoogleMap) { // Get the LOCALITY feature layer. localityLayer = googleMap.getFeatureLayer(FeatureLayerOptions.Builder() .featureType(FeatureType.LOCALITY) .build())
// Apply style factory function to LOCALITY layer. styleLocalityLayer() }स्टाइल फ़ैक्ट्री फ़ंक्शन बनाएं और उसे Locality feature layer पर लागू करें.
यहां दिए गए उदाहरण में, फ़ंक्शन सिर्फ़ तब लागू होता है, जब सुविधा का प्लेस आईडी, हवाई के हाना ("ChIJ0zQtYiWsVHkRk8lRoB1RNPo") के लिए हो. अगर दिया गया जगह का आईडी, हवाई के हाना का नहीं है, तो स्टाइल लागू नहीं होगी.
Java
private void styleLocalityLayer() {
// Create the style factory function. FeatureLayer.StyleFactory styleFactory = (Feature feature) -> {
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature instanceof PlaceFeature) { PlaceFeature placeFeature = (PlaceFeature) feature;
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return new FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and solid purple border. .fillColor(0x80810FCB) .strokeColor(0xFF810FCB) .build(); } } return null; };
// Apply the style factory function to the feature layer. localityLayer.setFeatureStyle(styleFactory); }Kotlin
private fun styleLocalityLayer() {
// Create the style factory function. val styleFactory = FeatureLayer.StyleFactory { feature: Feature ->
// Check if the feature is an instance of PlaceFeature, // which contains a place ID. if (feature is PlaceFeature) { val placeFeature: PlaceFeature = feature as PlaceFeature
// Determine if the place ID is for Hana, HI. if (placeFeature.getPlaceId().equals("ChIJ0zQtYiWsVHkRk8lRoB1RNPo")) {
// Use FeatureStyle.Builder to configure the FeatureStyle object // returned by the style factory function. return@StyleFactory FeatureStyle.Builder() // Define a style with purple fill at 50% opacity and // solid purple border. .fillColor(0x80810FCB.toInt()) .strokeColor(0xFF810FCB.toInt()) .build() } } return@StyleFactory null }
// Apply the style factory function to the feature layer. localityLayer?.setFeatureStyle(styleFactory) }
किसी लेयर से स्टाइलिंग हटाना
किसी लेयर से स्टाइलिंग हटाने के लिए, FeatureLayer.setFeatureStyle(null) को कॉल करें.