osmdroid 中 MyInfoWindow 继承 InfoWindow。 如何替换弹窗数据和位置 不再重新创建
要替换弹窗数据和位置,而不重新创建 MyInfoWindow 对象,可以使用 MyInfoWindow.update() 方法来更新弹窗的内容和位置。
以下是一个简单的示例:
public class MyInfoWindow extends InfoWindow {
private TextView textView;
private GeoPoint geoPoint;
public MyInfoWindow(int layoutResId, MapView mapView) {
super(layoutResId, mapView);
// 初始化弹窗布局中的控件
textView = (TextView) mView.findViewById(R.id.text_view);
}
public void update(String text, GeoPoint position) {
// 更新弹窗中的文本内容
textView.setText(text);
// 更新弹窗的位置
mView.setLayoutParams(new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.WRAP_CONTENT,
ViewGroup.LayoutParams.WRAP_CONTENT,
position, // 新的位置
Gravity.TOP | Gravity.LEFT
));
// 刷新弹窗
mView.requestLayout();
}
}
然后,在使用 MyInfoWindow 的地方,调用 update() 方法来更新弹窗的内容和位置。例如:
MyInfoWindow myInfoWindow = new MyInfoWindow(R.layout.info_window_layout, mapView);
mapView.setInfoWindow(myInfoWindow);
// ...
// 更新弹窗的内容和位置
myInfoWindow.update("New text", new GeoPoint(40.7128, -74.0060));
这样,弹窗的内容和位置就会被更新,而不会重新创建 MyInfoWindow 对象
原文地址: https://www.cveoy.top/t/topic/hHKL 著作权归作者所有。请勿转载和采集!