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 =
    ClusterManagerMy<Item(c>ontext, 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

ClusterManagerM<yItem >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(Un"clustered 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(U"nclustered 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,
        KM"L polyline clicked: ${feature.getProperty(na"me)}",
"        Toast.LENGTH_SHORT
    ).show()
}

      

Java

kmlPolylineLayer.addLayerToMap();
kmlPolylineLayer.setOnFeatureClickListener(feature - >Toast.makeText(context,
    K"ML polyline clicked:  "+ feature.getProperty(n"ame)",
    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,
        Ma"rker clicked: ${marker.title},
"        Toast.LENGTH_SHORT
    ).show()
    false
}

      

Java

markerCollection.setOnMarkerClickListener(marker - >{ Toast.makeText(context,
    M"arker 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ı.