OnMarkerClickListener ক্রিয়াকলাপ প্রয়োগগুলি এড়িয়ে চলুন, একটি স্থানীয় OnMarkerClickListener ব্যবহার করুন
// Not a good idea
class MapActivity extends Activity implements OnMarkerClickListener {
}
চিহ্নিতকারীর সাথে সংযুক্ত মূল ডেটা মডেলটি অনুসন্ধান করতে আপনার একটি মানচিত্রের প্রয়োজন হবে
private Map<Marker, Map<String, Object>> markers = new HashMap<>();
আপনার একটি ডেটা মডেল লাগবে
private Map<String, Object> dataModel = new HashMap<>();
ডেটা মডেলটিতে কিছু তথ্য রাখুন
dataModel.put("title", "My Spot");
dataModel.put("snipet", "This is my spot!");
dataModel.put("latitude", 20.0f);
dataModel.put("longitude", 100.0f);
ডেটা মডেল ব্যবহার করে একটি নতুন চিহ্নিতকারী তৈরি করার সময় উভয়টিকে নির্মাতার মানচিত্রে যুক্ত করুন
Marker marker = googleMap.addMarker(markerOptions);
markers.put(marker, dataModel);
ক্লিক চিহ্নিতকারী ইভেন্টের জন্য, একটি স্থানীয় অনমার্কারক্লিকলিস্টনার ব্যবহার করুন:
@Override
public void onMapReady(GoogleMap googleMap) {
// grab for laters
this.googleMap = googleMap;
googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
Map dataModel = (Map)markers.get(marker);
String title = (String)dataModel.get("title");
markerOnClick(title);
return false;
}
});
mapView.onResume();
showMarkers();
ZoomAsync zoomAsync = new ZoomAsync();
zoomAsync.execute();
}
তথ্য উইন্ডো প্রদর্শনের জন্য চিহ্নিতকারী মানচিত্র থেকে মূল ডেটা মডেলটি পুনরুদ্ধার করুন:
@Override
public void onMapReady(GoogleMap googleMap) {
this.googleMap = googleMap;
googleMap.setOnInfoWindowClickListener(new GoogleMap.OnInfoWindowClickListener() {
@Override
public void onInfoWindowClick(Marker marker) {
Map dataModel = (Map)markers.get(marker);
String title = (String)dataModel.get("title");
infoWindowOnClick(title);
}
});