- مقدمة
- إضافة طبقات تجمع متعددة و KML و GeoJSON
- إضافة الميزات الخاصة بك
- التعامل مع الأحداث الناتجة عن النقر
- الاطّلاع على التطبيق التجريبي
مقدمة
في البرامج التعليمية السابقة، تعلمت كيفية إضافة ميزات من KML GeoJSON على خريطتك وكذلك مجموعات العلامات. ولكن ماذا لو كنت تريد إضافة العديد من هذه الطبقات على نفس الخريطة والحصول على نقرة مستقلة الأحداث لكل منها؟
إضافة طبقات تجمع متعددة و KML و GeoJSON
تتضمّن المكتبة عناصر Manager
للمساعدة في إدارة أحداث النقر لأنواع متعددة.
من الطبقات. لذا، قبل إعداد الطبقات، ستحتاج أولاً إلى إنشاء مثيل لهذه الطبقات وتمريرها
GoogleMap
:
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);
بعد ذلك، يمكنك تمرير فئات المدير هذه إلى الدوال الإنشائية للطبقات الأخرى عندما لإعدادها:
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);
إضافة العناصر الخاصة بك
إذا كنت تريد إضافة علاماتك الخاصة أو تراكبات أرضية أو خطوط متعددة أو مضلّعات إلى جانب هذه
يمكنك أيضًا إنشاء طبقات Collection
الخاصة بك ثم استخدام Managers
.
لإضافة الميزة بدلاً من إضافتها مباشرةً إلى عنصر GoogleMap
.
على سبيل المثال، إذا كنت تريد إضافة علامة جديدة:
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"));
التعامل مع أحداث النقر
بالنسبة إلى المجموعات العنقودية وKML وGeoJSON، تعمل أدوات استماع النقر كالمعتاد - طالما أنك اجتياز
Manager
فئات في الدالة الإنشائية للطبقة التي تضبطها
على سبيل المثال، إليك كيفية إعداد أداة معالجة نقرات لطبقة KML:
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());
عند إضافة علاماتك الخاصة أو تراكبات أرض أو خطوط متعددة أو مضلعات، تأكد فقط من إضافة نقرات
المستمعين إلى عناصر Collection
تلك. على سبيل المثال، إليك كيفية إعداد محدّد الموقع
انقر على "المستمع" على markerCollection
:
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; });
الاطّلاع على التطبيق التجريبي
للاطّلاع على مثال لإضافة طبقات متعددة، ألقِ نظرة على MultiLayerDemoActivity
.
في التطبيق التجريبي المزود بمكتبة المرافق. ويوضّح لك دليل الإعداد كيفية تشغيل
التطبيق التجريبي.