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