Google Maps Multilayer Utility

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

مقدمه

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

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

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

Kotlin

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);

      

سپس، می‌توانید این کلاس‌های مدیر را هنگام راه‌اندازی به سازنده‌های لایه‌های دیگر منتقل کنید:

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
)

      

جاوا

ClusterManager<MyItem> localClusterManager = 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")
)

      

جاوا

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()
}

      

جاوا

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

      

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

Kotlin

markerCollection.setOnMarkerClickListener { 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 در برنامه نمایشی که همراه با کتابخانه ابزار ارائه می‌شود نگاهی بیندازید. راهنمای راه‌اندازی نحوه اجرای برنامه نمایشی را به شما نشان می‌دهد.