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

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

مقدمه

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

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

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

جاوا


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

      

کاتلین


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

      

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

جاوا


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

      

کاتلین


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
)

      

اضافه کردن ویژگی های خود

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

جاوا


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

      

کاتلین


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

      

مدیریت رویدادهای کلیک

برای خوشه‌ها، KML، و GeoJSON، شنونده‌های کلیک مانند معمول کار می‌کنند - تا زمانی که در سازنده لایه‌ای که تنظیم می‌کنید از کلاس‌های Manager عبور کنید. به عنوان مثال، در اینجا نحوه تنظیم یک شنونده کلیک برای لایه KML آمده است:

جاوا


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

      

کاتلین


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

      

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

جاوا


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

      

کاتلین


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

      

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

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