- Giriş
- Birden fazla küme, KML ve GeoJSON katmanı ekleme
- Kendi özelliklerinizi ekleme
- Tıklama etkinliklerini işleme
- 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ı Manager
nesneler
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.