要替换弹窗数据和位置,而不重新创建 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 对象

osmdroid 中 MyInfoWindow 继承 InfoWindow。 如何替换弹窗数据和位置 不再重新创建

原文地址: https://www.cveoy.top/t/topic/hHKL 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录