ابزار چند لایه Google Maps

پلتفرم را انتخاب کنید: Android JavaScript
  1. مقدمه
  2. افزودن چندین لایه خوشه، KML و GeoJSON
  3. اضافه کردن ویژگی های خود
  4. مدیریت رویدادهای کلیک
  5. برنامه دمو را ببینید

مقدمه

در آموزش‌های قبلی، یاد گرفتید که چگونه ویژگی‌های KML و GeoJSON و همچنین خوشه‌های نشانگر را به نقشه خود اضافه کنید. اما اگر بخواهید چندین لایه از این لایه ها را روی یک نقشه اضافه کنید و رویدادهای کلیکی مستقل برای هر کدام را دریافت کنید، چه؟

افزودن چندین لایه خوشه، KML و GeoJSON

این کتابخانه شامل اشیاء Manager برای کمک به مدیریت رویدادهای کلیک برای چندین نوع لایه است. بنابراین، قبل از راه‌اندازی لایه‌های خود، ابتدا باید آن‌ها را نمونه‌سازی کنید و در GoogleMap خود ارسال کنید:

کاتلین

val markerManager = MarkerManager(map)
val groundOverlayManager = GroundOverlayManager(map!!)
val polygonManager = PolygonManager(map)
val polylineManager = PolylineManager(map)

      

جاوا

MarkerManager markerManager = new MarkerManager(map);
GroundOverlayManager groundOverlayManager = new GroundOverlayManager(map);
PolygonManager polygonManager = new PolygonManager(map);
PolylineManager polylineManager = new PolylineManager(map);

      

در مرحله بعد، می‌توانید این کلاس‌های مدیر را هنگام تنظیم آن‌ها به سازنده‌های لایه‌های دیگر منتقل کنید:

کاتلین

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
)

      

جاوا

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 استفاده کنید. به عنوان مثال، اگر می خواهید یک نشانگر جدید اضافه کنید:

کاتلین

val markerCollection =
    markerManager.newCollection()
markerCollection.addMarker(
    MarkerOptions()
        .position(LatLng(51.150000, -0.150032))
        .icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_AZURE))
        .title("Unclustered marker")
)

      

جاوا

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 آمده است:

کاتلین

kmlPolylineLayer.addLayerToMap()
kmlPolylineLayer.setOnFeatureClickListener { feature: Feature ->
    Toast.makeText(context,
        "KML polyline clicked: ${feature.getProperty("name")}",
        Toast.LENGTH_SHORT
    ).show()
}

      

جاوا

kmlPolylineLayer.addLayerToMap();
kmlPolylineLayer.setOnFeatureClickListener(feature -> Toast.makeText(context,
    "KML polyline clicked: " + feature.getProperty("name"),
    Toast.LENGTH_SHORT).show());

      

وقتی نشانگرها، همپوشانی های زمین، چند خط یا چند ضلعی خود را اضافه می کنید، فقط مطمئن شوید که شنوندگان کلیک را به آن اشیاء Collection اضافه کنید. برای مثال، در اینجا نحوه تنظیم شنونده کلیک نشانگر در markerCollection آمده است:

کاتلین

markerCollection.setOnMarkerClickListener { marker: Marker ->
    Toast.makeText(
        context,
        "Marker clicked: ${marker.title}",
        Toast.LENGTH_SHORT
    ).show()
    false
}

      

جاوا

markerCollection.setOnMarkerClickListener(marker -> { Toast.makeText(context,
    "Marker clicked: " + marker.getTitle(),
        Toast.LENGTH_SHORT).show();
    return false;
});

      

برنامه دمو را ببینید

برای مثالی از افزودن چند لایه، به MultiLayerDemoActivity در برنامه آزمایشی که با کتابخانه ابزار ارسال می شود، نگاهی بیندازید. راهنمای راه اندازی به شما نشان می دهد که چگونه برنامه آزمایشی را اجرا کنید.