使用 osmdroid 显示多个 InfoWindows

Display multiple InfoWindows using osmdroid

我想显示多个标记信息窗口来标记不同的路线。但是,只显示最后创建的一个。

我的(相关)标记创建代码是:-

    if (routes.size() < 3) {
        Polyline roadOverlay = new Polyline();
        roadOverlay.setColor(polyClr.get(routes.size()));
        roadOverlay.setWidth(5f);
        roadOverlay.setPoints(waypoints);

        //  Add Route Marker

        Marker m = new Marker(map);
        double d = roadOverlay.getDistance()*5/8000;
        GeoPoint midpt = waypoints.get((int)(waypoints.size()/2));
        m.setTitle(rteDesc.get(routes.size())+" - "+String.format("%.2f miles",d));
        m.setSnippet("Tap to Save");
        m.setIcon(getResources().getDrawable(R.drawable.transparent));
        m.setPosition(midpt);
        m.showInfoWindow();
        rtemkrs.add(m);

        routes.add(roadOverlay);
    }

显示代码为:-

    for (int j = rtemkrs.size()-1; j>=0; j--) {
        map.getOverlays().add(rtemkrs.get(j));
    }
    map.invalidate();

我正在使用 osmdroid v 6.1.0 和 osmbonuspack v 6.6.0

如何显示多个标记信息窗口?

默认情况下,所有标记都使用一个共享视图作为它们的信息窗口。因此只能显示一个视图。

但可以改变行为:

  • 您需要为每个标记创建一个 MarkerInfoWindow 实例,例如,这是默认标记的创建方式:new MarkerInfoWindow(R.layout.bonuspack_bubble, mMapView);
  • 您必须通过为每个标记调用 marker.setInfoWindow(...) (see method's javadoc) 将视图传递给标记