android 使用osmdroid批量添加自定义标记和自定义弹窗
在使用osmdroid进行android开发时,批量添加自定义标记和自定义弹窗,可以使用如下步骤:
- 创建自定义标记类
public class MyMarker extends Marker {
private String title;
private String snippet;
public MyMarker(MapView mapView, String title, String snippet, GeoPoint geoPoint) {
super(mapView);
this.title = title;
this.snippet = snippet;
setPosition(geoPoint);
setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
}
@Override
public boolean onMarkerClick(Marker marker, MapView mapView) {
// 点击标记时弹出自定义弹窗
MyInfoWindow myInfoWindow = new MyInfoWindow(R.layout.my_info_window, mapView, title, snippet);
mapView.setInfoWindow(myInfoWindow);
return super.onMarkerClick(marker, mapView);
}
}
- 创建自定义弹窗类
public class MyInfoWindow extends InfoWindow {
private String title;
private String snippet;
public MyInfoWindow(int layoutResId, MapView mapView, String title, String snippet) {
super(layoutResId, mapView);
this.title = title;
this.snippet = snippet;
}
@Override
public void onOpen(Object item) {
TextView titleView = mView.findViewById(R.id.title);
titleView.setText(title);
TextView snippetView = mView.findViewById(R.id.snippet);
snippetView.setText(snippet);
}
@Override
public void onClose() {
}
}
- 批量添加自定义标记
List<MyMarker> markers = new ArrayList<>();
for (int i = 0; i < 10; i++) {
MyMarker marker = new MyMarker(mapView, "Title " + i, "Snippet " + i, new GeoPoint(39.91667 + Math.random() * 0.1, 116.38333 + Math.random() * 0.1));
marker.setIcon(getResources().getDrawable(R.drawable.ic_marker));
markers.add(marker);
}
mapView.getOverlays().addAll(markers);
- 设置弹窗显示时间
mapView.setInfoWindow(new MyInfoWindow(R.layout.my_info_window, mapView, title, snippet));
mapView.getInfoWindow().setDuration(5000);
以上就是使用osmdroid进行android开发时,批量添加自定义标记和自定义弹窗的步骤
原文地址: https://www.cveoy.top/t/topic/hseF 著作权归作者所有。请勿转载和采集!