Google Maps की कई लेयर वाली सुविधाएं

प्लैटफ़ॉर्म चुनें: Android JavaScript
  1. शुरुआती जानकारी
  2. एक से ज़्यादा क्लस्टर, KML, और GeoJSON लेयर जोड़ना
  3. अपनी सुविधाएं जोड़ना
  4. क्लिक इवेंट मैनेज करना
  5. डेमो ऐप्लिकेशन देखें

परिचय

पिछले ट्यूटोरियल में, आपने सीखें कि किसी KML और आपके मैप पर GeoJSON और साथ ही मार्कर के क्लस्टर. लेकिन, अगर आपको इनमें से कई लेयर को एक ही मैप पर जोड़ना हो और इंडिपेंडेंट क्लिक चाहिए, तो में से हर एक के लिए इवेंट?

एक से ज़्यादा क्लस्टर, KML, और GeoJSON लेयर जोड़ना

लाइब्रेरी में कई तरह के क्लिक इवेंट को मैनेज करने के लिए, Managerऑब्जेक्ट होते हैं टैप करें. इसलिए, अपनी लेयर सेट अप करने से पहले, आपको उन्हें इंस्टैंशिएट करके पास करना होगा आपका GoogleMap:

Kotlin



val markerManager = MarkerManager(map)
val groundOverlayManager = GroundOverlayManager(map!!)
val polygonManager = PolygonManager(map)
val polylineManager = PolylineManager(map)

      

Java


MarkerManager markerManager = new MarkerManager(map);
GroundOverlayManager groundOverlayManager = new GroundOverlayManager(map);
PolygonManager polygonManager = new PolygonManager(map);
PolylineManager polylineManager = new PolylineManager(map);

      

इसके बाद, इन मैनेजर क्लास को अन्य लेयर के कंस्ट्रक्टर में पास किया जा सकता है. उन्हें सेट अप किया जा सकता है:

Kotlin



val clusterManager =
    ClusterManager<MyItem>(context, map, markerManager)
val geoJsonLineLayer = GeoJsonLayer(
    map,
    R.raw.geojson_file,
    context,
    markerManager,
    polygonManager,
    polylineManager,
    groundOverlayManager
)
val kmlPolylineLayer = KmlLayer(
    map,
    R.raw.kml_file,
    context,
    markerManager,
    polygonManager,
    polylineManager,
    groundOverlayManager,
    null
)

      

Java


ClusterManager<MyItem> clusterManager = new ClusterManager<>(context, map, markerManager);
GeoJsonLayer geoJsonLineLayer = new GeoJsonLayer(map, R.raw.geojson_file, context, markerManager, polygonManager, polylineManager, groundOverlayManager);
KmlLayer kmlPolylineLayer = new KmlLayer(map, R.raw.kml_file, context, markerManager, polygonManager, polylineManager, groundOverlayManager, null);

      

अपनी सुविधाएं जोड़ना

अगर आपको अपने मार्कर, ग्राउंड ओवरले, पॉलीलाइन या पॉलीगॉन जोड़ने हैं, तो इनके साथ-साथ परतें, अपना खुद का Collection बनाएं और फिर Managers का उपयोग करें GoogleMap ऑब्जेक्ट में सीधे जोड़ने के बजाय सुविधा जोड़ने के लिए. उदाहरण के लिए, अगर आप कोई नया मार्कर जोड़ना चाहते हैं, तो:

Kotlin



val markerCollection =
    markerManager.newCollection()
markerCollection.addMarker(
    MarkerOptions()
        .position(LatLng(51.150000, -0.150032))
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
        .title("Unclustered marker")
)

      

Java


MarkerManager.Collection markerCollection = markerManager.newCollection();
markerCollection.addMarker(new MarkerOptions()
    .position(new LatLng(51.150000, -0.150032))
    .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
    .title("Unclustered marker"));

      

क्लिक इवेंट मैनेज करना

क्लस्टर, KML, और GeoJSON के लिए, क्लिक लिसनर सामान्य तरीके से काम करते हैं - जब तक आप आप जिस लेयर को सेट कर रहे हैं उसके कंस्ट्रक्टर में Manager क्लास. उदाहरण के लिए, KML लेयर के लिए क्लिक लिसनर सेट अप करने का तरीका यहां बताया गया है:

Kotlin



kmlPolylineLayer.addLayerToMap()
kmlPolylineLayer.setOnFeatureClickListener { feature: Feature ->
    Toast.makeText(context,
        "KML polyline clicked: ${feature.getProperty("name")}",
        Toast.LENGTH_SHORT
    ).show()
}

      

Java


kmlPolylineLayer.addLayerToMap();
kmlPolylineLayer.setOnFeatureClickListener(feature -> Toast.makeText(context,
    "KML polyline clicked: " + feature.getProperty("name"),
    Toast.LENGTH_SHORT).show());

      

अपने मार्कर, ग्राउंड ओवरले, पॉलीलाइन या पॉलीगॉन जोड़ते समय, बस क्लिक जोड़ना न भूलें उन Collection ऑब्जेक्ट को सुन सकते हैं. उदाहरण के लिए, मार्कर सेट अप करने का तरीका यहां बताया गया है markerCollection पर लिसनर पर क्लिक करें:

Kotlin



markerCollection.setOnMarkerClickListener { marker: Marker ->
    Toast.makeText(
        context,
        "Marker clicked: ${marker.title}",
        Toast.LENGTH_SHORT
    ).show()
    false
}

      

Java


markerCollection.setOnMarkerClickListener(marker -> { Toast.makeText(context,
    "Marker clicked: " + marker.getTitle(),
        Toast.LENGTH_SHORT).show();
    return false;
});

      

डेमो ऐप्लिकेशन देखें

एक से ज़्यादा परत जोड़ने के उदाहरण के लिए, MultiLayerDemoActivity पर एक नज़र डालें को डेमो ऐप्लिकेशन में जोड़ना होगा, जो यूटिलिटी लाइब्रेरी के साथ भेजे जाते हैं. सेटअप गाइड में बताया गया है कि डेमो ऐप्लिकेशन.