Google Maps Android GeoJSON सुविधा

प्लैटफ़ॉर्म चुनें: Android iOS JavaScript
  1. शुरुआती जानकारी
  2. अपने मैप में GeoJsonlayer जोड़ें
  3. GeoJsonlayer हटाएं
  4. GeoJsonFeature जोड़ना और हटाना
  5. GeoJsonFeatures और उनकी प्रॉपर्टी ऐक्सेस करना
  6. GeoJsonlayer और GeoJsonFeatures को स्टाइल करना
  7. डेमो ऐप्लिकेशन देखें

शुरुआती जानकारी

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 में, आपके पास लेयर में जोड़े गए किसी भी पॉइंट, लाइनस्ट्रिंग, और पॉलीगॉन के लिए डिफ़ॉल्ट स्टाइल सेट करने का विकल्प है. डिफ़ॉल्ट स्टाइल सिर्फ़ तब लागू होती हैं, जब सुविधा में किसी भी ज्यामितीय शैली के लिए कोई स्टाइल सेट न की गई हो. डिफ़ॉल्ट स्टाइल में किया जाने वाला कोई भी बदलाव, डिफ़ॉल्ट स्टाइल का इस्तेमाल करने वाली सभी सुविधाओं में भी दिखेगा.

डिफ़ॉल्ट स्टाइल लागू करने का तरीका यहां बताया गया है

  1. सही डिफ़ॉल्ट स्टाइल ऑब्जेक्ट वापस पाएं. यह GeoJsonPointStyle, GeoJsonLineStringStyle या GeoJsonPolygonStyle में से कोई एक हो सकता है.
  2. स्टाइल पर अपने पसंदीदा विकल्प लागू करें.

उदाहरण के लिए, नीचे दिए गए कोड सैंपल में, डिफ़ॉल्ट पॉइंट स्टाइल में बदलाव करने का तरीका बताया गया है. इससे पॉइंट को टाइटल और स्निपेट की मदद से खींचा जा सकता है.

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 पर स्टाइल लागू करने का तरीका, यहां दिया गया है.

  1. सही स्टाइल ऑब्जेक्ट बनाएं. यह GeoJsonPointStyle, GeoJsonLineStringStyle या GeoJsonPolygonStyle हो सकता है.
  2. स्टाइल पर अपने पसंदीदा विकल्प लागू करें.
  3. स्टाइल ऑब्जेक्ट को 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 पर एक नज़र डालें. सेटअप गाइड में डेमो ऐप्लिकेशन चलाने का तरीका बताया गया है.