要使用 OSMDroid 批量添加自定义标记,可以按照以下步骤进行操作:

  1. 创建一个 MapActivity 或者 MapView 的子类,并在 onCreate() 方法中设置 OSMDroid 的相关参数,包括地图中心点、缩放级别等。

  2. 创建一个 Overlay 类,用于添加标记。Overlay 类需要继承 ItemizedOverlay 类,并实现 ItemizedOverlay 的抽象方法,包括 size()、getItem()、onTap() 等。

  3. 在 Overlay 类中创建一个 ArrayList,用于存储所有的标记,每个标记可以用一个 OverlayItem 对象表示。可以通过循环遍历的方式,将所有标记添加到 ArrayList 中。

  4. 在 Overlay 类的构造方法中,调用父类的构造方法,并将 ArrayList 作为参数传入。

  5. 在 MapActivity 或者 MapView 的子类中,创建 Overlay 对象,并将其添加到 MapView 中,通过调用 MapView 的 addOverlay() 方法实现。

  6. 最后,在 MapView 的子类中,调用 invalidate() 方法,刷新地图,使得标记能够显示在地图上。

下面是一个简单的示例代码,演示了如何使用 OSMDroid 批量添加自定义标记:

public class MyMapActivity extends MapActivity {
    private MapView mapView;
    private ArrayList<OverlayItem> items;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_map);

        mapView = (MapView) findViewById(R.id.map_view);
        mapView.setBuiltInZoomControls(true);
        mapView.setMultiTouchControls(true);
        mapView.getController().setZoom(12);
        mapView.getController().setCenter(new GeoPoint(39.9, 116.4));

        items = new ArrayList<>();
        items.add(new OverlayItem('Title 1', 'Snippet 1', new GeoPoint(39.9, 116.4)));
        items.add(new OverlayItem('Title 2', 'Snippet 2', new GeoPoint(39.8, 116.5)));
        items.add(new OverlayItem('Title 3', 'Snippet 3', new GeoPoint(39.7, 116.6)));

        MyOverlay overlay = new MyOverlay(items);
        mapView.getOverlays().add(overlay);
        mapView.invalidate();
    }

    private class MyOverlay extends ItemizedOverlay<OverlayItem> {
        public MyOverlay(ArrayList<OverlayItem> items) {
            super(items);
        }

        @Override
        protected boolean onTap(int index) {
            Toast.makeText(MyMapActivity.this, items.get(index).getTitle(), Toast.LENGTH_SHORT).show();
            return true;
        }

        @Override
        public int size() {
            return items.size();
        }

        @Override
        protected OverlayItem createItem(int i) {
            return items.get(i);
        }
    }
}

在这个示例代码中,MyMapActivity 继承了 MapActivity 类,实现了一个简单的地图应用。在 onCreate() 方法中,设置了地图中心点和缩放级别,并创建了一个 ArrayList,用于存储所有的标记。然后创建了一个 MyOverlay 对象,并将其添加到 MapView 中,最后调用了 invalidate() 方法,刷新地图。MyOverlay 类继承了 ItemizedOverlay 类,并实现了其抽象方法,在构造方法中将 ArrayList 作为参数传入。在 onTap() 方法中,弹出了一个 Toast,显示标记的标题。

Android 使用 OSMDroid 批量添加自定义标记

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

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