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

Platform seçin: Android JavaScript
  1. Giriş
  2. Birden fazla küme, KML ve GeoJSON katmanı ekleme
  3. Kendi özelliklerinizi ekleme
  4. Tıklama etkinliklerini işleme
  5. Demo uygulamasına göz atın

Giriş

Önceki eğiticilerde haritanıza KML ve GeoJSON'dan özellik, ayrıca işaretçi kümeleri kümelerini nasıl ekleyeceğinizi öğrendiniz. Peki, bu katmanlardan birkaçını aynı haritaya eklemek ve her biri için bağımsız tıklama etkinlikleri almak isterseniz ne olur?

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

Kitaplıkta, birden fazla katman türü için tıklama etkinliklerinin yönetilmesine yardımcı Managernesneler bulunur. Dolayısıyla, katmanlarınızı oluşturmadan önce bunları örneklendirmeniz ve GoogleMap aktarmanız gerekir:

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ı, bunları oluştururken diğer katmanların kurucularına aktarabilirsiniz:

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

Bu katmanlarla birlikte kendi işaretçilerinizi, zemin yer bindirmelerinizi, çoklugenlerinizi veya poligonlarınızı eklemek istiyorsanız kendi Collection oluşturun ve özelliği doğrudan GoogleMap nesnesine eklemek yerine Managers kullanarak 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 işleme

Kümeler, KML ve GeoJSON için tıklama işleyicileri, ayarladığınız katmanın oluşturucuda Manager sınıflarını geçtiğiniz sürece normal şekilde çalışır. Ö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 bu Collection nesnelerine tıklama işleyicileri eklediğinizden emin olun. Örneğin, markerCollection üzerinde işaretçi tıklama işleyiciyi nasıl ayarlayacağınız aşağıda açıklanmıştır:

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 uygulamaya göz atın

Birden fazla katman eklemeyle ilgili bir örnek için yardımcı program kitaplığıyla birlikte gönderilen demo uygulamasında MultiLayerDemoActivity bölümüne göz atın. Kurulum kılavuzu, demo uygulamanın nasıl çalıştırılacağını gösterir.