Google Maps की कई स्तरों वाली सुविधा

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

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

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

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

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

Java


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

      

Kotlin


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

      

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

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);

      

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
)

      

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

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

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"));

      

Kotlin


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

      

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

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

Java


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

      

Kotlin


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

      

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

Java


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

      

Kotlin


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

      

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

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