- शुरुआती जानकारी
- अपने मैप में GeoJsonlayer जोड़ें
- GeoJsonlayer हटाएं
- GeoJsonFeature जोड़ना और हटाना
- GeoJsonFeatures और उनकी प्रॉपर्टी ऐक्सेस करना
- GeoJsonlayer और GeoJsonFeatures को स्टाइल करना
- डेमो ऐप्लिकेशन देखें
शुरुआती जानकारी
GeoJSON, JSON डेटा फ़ॉर्मैट का एक्सटेंशन है और यह इलाके के हिसाब से डेटा दिखाता है. इस सुविधा का इस्तेमाल करके, भौगोलिक सुविधाओं को GeoJSON फ़ॉर्मैट में सेव किया जा सकता है और उन्हें मैप पर एक लेयर के तौर पर
रेंडर किया जा सकता है. मैप पर अपना GeoJSON डेटा जोड़ने और उससे हटाने के लिए, addLayerToMap()
और removeLayerFromMap()
को कॉल करें. इसी तरह,
addFeature()
और removeFeature()
को कॉल करके और किसी
GeoJsonFeature
ऑब्जेक्ट को पास करके, अलग-अलग सुविधाएं जोड़ी और हटाई जा सकती हैं. अगर इन सुविधाओं को ऐक्सेस करना है, तो
getFeatures()
को कॉल करके, लेयर में जोड़े गए सभी
GeoJsonFeature
ऑब्जेक्ट के बारे में फिर से जानकारी ली जा सकती है.
आप getDefaultPointStyle()
, getDefaultLineStringStyle()
या
getDefaultPolygonStyle()
को कॉल करके और हर एक पर शैली के विकल्प सेट करके, डिफ़ॉल्ट शैलियों को भी सुविधाओं पर जोड़े जाने से पहले लागू करने के लिए सेट कर सकते हैं.
इसके अलावा, आपके पास GeoJsonFeature
के लिए स्टाइल सेट करने का विकल्प है. इसके लिए, सुविधा पर setPointStyle()
, setLineStringStyle()
या setPolygonStyle()
को कॉल करें और मिलते-जुलते स्टाइल ऑब्जेक्ट को पास करें.
अपने मैप में GeoJsonlayer जोड़ें
मैप में GeoJson लेयर जोड़ने के लिए, पहले GeoJsonlayer क्लास का इंस्टेंस बनाएं. GeoJsonlayer को इंस्टैंशिएट करने के दो तरीके हैं.
JSONObject
से इंपोर्ट करने के लिए, आपको इनकी ज़रूरत होगी:
GoogleMap
ऑब्जेक्ट, जहां लेयर को रेंडर करना हैJSONObject
में वह GeoJSON डेटा है जिसे लेयर में जोड़ा जाना है
Kotlin
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data val layer = GeoJsonLayer(map, geoJsonData)
Java
JSONObject geoJsonData = // JSONObject containing the GeoJSON data GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);
किसी स्थानीय GeoJSON फ़ाइल से इंपोर्ट करने के लिए, आपको इनकी ज़रूरत होगी:
GoogleMap
ऑब्जेक्ट, जहां लेयर को रेंडर करना है- GeoJSON डेटा वाली लोकल संसाधन फ़ाइल
Context
ऑब्जेक्ट, जो लोकल रिसॉर्स फ़ाइल खोलने के लिए ज़रूरी है
Kotlin
val layer = GeoJsonLayer(map, R.raw.geojson_file, context)
Java
GeoJsonLayer layer = new GeoJsonLayer(map, R.raw.geojson_file, context);
GeoJsonLayer
बनाने के बाद, इंपोर्ट किए गए डेटा को मैप पर जोड़ने के लिए,
addLayerToMap()
को कॉल करें:
Kotlin
layer.addLayerToMap()
Java
layer.addLayerToMap();
GeoJsonlayer हटाएं
मान लें कि आपने यह लेयर जोड़ी है
Kotlin
val geoJsonData: JSONObject? = // JSONObject containing the GeoJSON data val layer = GeoJsonLayer(map, geoJsonData)
Java
JSONObject geoJsonData = // JSONObject containing the GeoJSON data GeoJsonLayer layer = new GeoJsonLayer(map, geoJsonData);
GeoJsonlayer को हटाने के लिए, removeLayerFromMap()
को कॉल करें
Kotlin
layer.removeLayerFromMap()
Java
layer.removeLayerFromMap();
GeoJsonFeature जोड़ना और हटाना
GeoJSON में एक सुविधा का टाइप "feature" होता है. इसमें ज्यामिति है, यह एक प्रॉपर्टी का सदस्य है, और वैकल्पिक रूप से इसमें बाउंडिंग बॉक्स या एक आईडी है.
आपके पास एक-एक करके, GeoJsonFeature
ऑब्जेक्ट बनाने और उन्हें
GeoJsonLayer
में जोड़ने का विकल्प है.
मान लें कि आपने एक ऐसी सुविधा बनाई है जिसमें 0, 0 पर एक पॉइंट है, जिसकी प्रॉपर्टी में एक एंट्री और कोई बाउंडिंग बॉक्स नहीं है.
Kotlin
val point = GeoJsonPoint(LatLng(0.0, 0.0)) val properties = hashMapOf("Ocean" to "South Atlantic") val pointFeature = GeoJsonFeature(point, "Origin", properties, null)
Java
GeoJsonPoint point = new GeoJsonPoint(new LatLng(0, 0)); HashMap<String, String> properties = new HashMap<>(); properties.put("Ocean", "South Atlantic"); GeoJsonFeature pointFeature = new GeoJsonFeature(point, "Origin", properties, null);
लेयर में सुविधा को जोड़ने के लिए, addFeature()
को कॉल करें और जोड़ने के लिए
सुविधा को पास करें.
Kotlin
layer.addFeature(pointFeature)
Java
layer.addFeature(pointFeature);
लेयर में कोई सुविधा जोड़ने के बाद उसे हटाने के लिए, removeFeature()
को कॉल करें और हटाने के लिए, सुविधा को पास करें.
Kotlin
layer.removeFeature(pointFeature)
Java
layer.removeFeature(pointFeature);
GeoJsonFeatures और उनकी प्रॉपर्टी ऐक्सेस करना
लेयर में जोड़ी गई सभी GeoJsonFeatures
ऐक्सेस करने के लिए, आपके पास
उस GeoJsonLayer
पर getFeatures()
को कॉल करने का विकल्प होता है जिसे
आपने बनाया है. यह GeoJsonFeatures
का एक दोहराने वाला नतीजा देगा, जिसे आप हर लूप के लिए ऐक्सेस कर सकते हैं, जैसा कि नीचे दिखाया गया है.
Kotlin
for (feature in layer.features) { // Do something to the feature }
Java
for (GeoJsonFeature feature : layer.getFeatures()) { // Do something to the feature }
यह देखने के लिए कि सेव की गई हर सुविधा में कोई खास प्रॉपर्टी है या नहीं और अगर वह मौजूद है, तो उसे ऐक्सेस करने के लिए, getFeatures()
तरीके के साथ hasProperty()
और getProperty()
तरीकों का इस्तेमाल करें.
Kotlin
if (feature.hasProperty("Ocean")) { val oceanProperty = feature.getProperty("Ocean") }
Java
if (feature.hasProperty("Ocean")) { String oceanProperty = feature.getProperty("Ocean"); }
GeoJSON ज्यामिति क्लिक इवेंट
मैप पर ज्यामिति सुविधाओं में क्लिक इवेंट सुनने के लिए, GeoJsonLayer.OnFeatureClickListener()
का इस्तेमाल किया जा सकता है. नीचे दिया गया उदाहरण, किसी सुविधा पर क्लिक करने के बाद, किसी सुविधा का टाइटल लॉग करता है:
Kotlin
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener { feature -> Log.i("GeoJsonClick", "Feature clicked: ${feature.getProperty("title")}") }
Java
// Set a listener for geometry clicked events. layer.setOnFeatureClickListener(new Layer.OnFeatureClickListener() { @Override public void onFeatureClick(Feature feature) { Log.i("GeoJsonClick", "Feature clicked: " + feature.getProperty("title")); } });
GeoJsonlayer और GeoJsonFeatures को स्टाइल करें
आप GeoJsonlayer के लिए डिफ़ॉल्ट शैलियां सेट कर सकते हैं या लेयर में अलग-अलग सुविधाओं को शैली दे सकते हैं.
डिफ़ॉल्ट स्टाइल
GeoJsonlayer में, आपके पास लेयर में जोड़े गए किसी भी पॉइंट, लाइनस्ट्रिंग, और पॉलीगॉन के लिए डिफ़ॉल्ट स्टाइल सेट करने का विकल्प है. डिफ़ॉल्ट स्टाइल सिर्फ़ तब लागू होती हैं, जब सुविधा में किसी भी ज्यामितीय शैली के लिए कोई स्टाइल सेट न की गई हो. डिफ़ॉल्ट स्टाइल में किया जाने वाला कोई भी बदलाव, डिफ़ॉल्ट स्टाइल का इस्तेमाल करने वाली सभी सुविधाओं में भी दिखेगा.
डिफ़ॉल्ट स्टाइल लागू करने का तरीका यहां बताया गया है
- सही डिफ़ॉल्ट स्टाइल ऑब्जेक्ट वापस पाएं. यह
GeoJsonPointStyle
,GeoJsonLineStringStyle
याGeoJsonPolygonStyle
में से कोई एक हो सकता है. - स्टाइल पर अपने पसंदीदा विकल्प लागू करें.
उदाहरण के लिए, नीचे दिए गए कोड सैंपल में, डिफ़ॉल्ट पॉइंट स्टाइल में बदलाव करने का तरीका बताया गया है. इससे पॉइंट को टाइटल और स्निपेट की मदद से खींचा जा सकता है.
Kotlin
val pointStyle = layer.defaultPointStyle pointStyle.isDraggable = true pointStyle.title = "Hello, World!" pointStyle.snippet = "I am a draggable marker"
Java
GeoJsonPointStyle pointStyle = layer.getDefaultPointStyle(); pointStyle.setDraggable(true); pointStyle.setTitle("Hello, World!"); pointStyle.setSnippet("I am a draggable marker");
GeoJsonFeature के लिए खास स्टाइल
वैकल्पिक रूप से, आप परत में अलग-अलग सुविधाओं को शैली दे सकते हैं. GeoJsonFeature
पर स्टाइल लागू करने का तरीका, यहां दिया गया है.
- सही स्टाइल ऑब्जेक्ट बनाएं. यह
GeoJsonPointStyle
,GeoJsonLineStringStyle
याGeoJsonPolygonStyle
हो सकता है. - स्टाइल पर अपने पसंदीदा विकल्प लागू करें.
- स्टाइल ऑब्जेक्ट को
GeoJsonFeature
पर सही तरीके से पास करें, जोsetPointStyle()
,setLineStringStyle()
याsetPolygonStyle()
होगा.
उदाहरण के लिए, इस तरह GeoJsonFeature
के लिए लाइनस्ट्रिंग शैली को पसंद के मुताबिक बनाया जा सकता है, ताकि इसका रंग लाल हो.
Kotlin
// Create a new feature containing a linestring val lineStringArray: MutableList<LatLng> = ArrayList() lineStringArray.add(LatLng(0.0, 0.0)) lineStringArray.add(LatLng(50.0, 50.0)) val lineString = GeoJsonLineString(lineStringArray) val lineStringFeature = GeoJsonFeature(lineString, null, null, null) // Set the color of the linestring to red val lineStringStyle = GeoJsonLineStringStyle() lineStringStyle.color = Color.RED // Set the style of the feature lineStringFeature.lineStringStyle = lineStringStyle
Java
// Create a new feature containing a linestring List<LatLng> lineStringArray = new ArrayList<LatLng>(); lineStringArray.add(new LatLng(0, 0)); lineStringArray.add(new LatLng(50, 50)); GeoJsonLineString lineString = new GeoJsonLineString(lineStringArray); GeoJsonFeature lineStringFeature = new GeoJsonFeature(lineString, null, null, null); // Set the color of the linestring to red GeoJsonLineStringStyle lineStringStyle = new GeoJsonLineStringStyle(); lineStringStyle.setColor(Color.RED); // Set the style of the feature lineStringFeature.setLineStringStyle(lineStringStyle);
डेमो ऐप्लिकेशन देखें
किसी यूआरएल से GeoJSON फ़ाइल को इंपोर्ट करने और उससे एक लेयर बनाने के उदाहरण के लिए, यूटिलिटी लाइब्रेरी की मदद से शिप करने वाले डेमो ऐप्लिकेशन में GeoJsonDemoActivity
पर एक नज़र डालें. सेटअप गाइड में डेमो ऐप्लिकेशन चलाने का तरीका बताया गया है.