Google Haritalar Çok Katmanlı Yardımcı Programı

Platform seçin: Android JavaScript
  1. Giriş
  2. Birden çok küme, KML ve GeoJSON katmanı ekleme
  3. Kendi özelliklerinizi ekleme
  4. Tıklama etkinliklerini yönetme
  5. Demo uygulamasını inceleyin

Giriş

Önceki eğiticilerde, KML ve Haritanıza GeoJSON ekleyin ve kümelerini görebilirsiniz. Peki, bu katmanlardan birkaçını aynı haritaya eklemek ve bağımsız tıklama nasıl olacak?

Birden fazla küme, KML ve GeoJSON katmanı ekleme

Kitaplıkta, birden fazla tür için tıklama etkinliklerinin yönetilmesine yardımcı olacak Managernesneler bulunur. bir katmandır. Bu yüzden, katmanlarınızı ayarlamadan önce bunları örneklendirmeniz ve GoogleMap cihazınız:

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

      

Daha sonra, bu yönetici sınıflarını diğer katmanların oluşturucularına geçirebilirsiniz: ayarlayın:

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

      

Kendi özelliklerinizi ekleme

Bunların yanına kendi işaretçilerinizi, zemin bindirmelerinizi, çoklu çizgilerinizi veya poligonlarınızı eklemek isterseniz katmanları oluşturmak için, kendi Collection öğenizi oluşturun ve ardından Managers ekleme işlemini doğrudan GoogleMap nesnesine eklemek yerine ekleyin. Örneğin, yeni bir işaretçi eklemek isterseniz:

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

      

Tıklama etkinliklerini yönetme

Kümeler, KML ve GeoJSON için tıklama işleyiciler, Ayarladığınız katmanın oluşturucusunda Manager sınıf. Örneğin, KML katmanı için bir tıklama işleyicinin nasıl ayarlanacağı aşağıda açıklanmıştır:

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

      

Kendi işaretçilerinizi, zemin bindirmelerinizi, çoklu çizgilerinizi veya poligonlarınızı eklerken, dinleyicileri bu Collection nesnede görebilir. Örneğin, işaretçiyi nasıl ayarlayacağınız aşağıda açıklanmıştır: markerCollection üzerindeki tıklama işleyici:

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

      

Demo uygulamayı göster

Birden fazla katman ekleme örneği için MultiLayerDemoActivity bölümüne bakın. hakkında daha fazla bilgi edinin. Kurulum kılavuzunda demo uygulaması.