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 बनाएं. इसके बाद, उन्हें GoogleMap ऑब्जेक्ट में सीधे जोड़ने के बजाय, Managers का इस्तेमाल करके सुविधा जोड़ें. उदाहरण के लिए, अगर आपको कोई नया मार्कर जोड़ना है, तो:

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 पर एक नज़र डालें, जो यूटिलिटी लाइब्रेरी के साथ उपलब्ध है. सेटअप गाइड में डेमो ऐप्लिकेशन चलाने का तरीका बताया गया है.