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)

      

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> 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 তৈরি করুন এবং তারপরে GoogleMap অবজেক্টে সরাসরি যোগ করার পরিবর্তে ফিচার যোগ করতে Managers ব্যবহার করুন। যেমন, আপনি নতুন মার্কার যোগ করতে চাইলে:

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 ->
    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 দেখুন। সেট-আপ গাইড থেকে আপনি জানতে পারবেন কীভাবে ডেমো অ্যাপ রান করাতে হয়।