当用户点击 osmdroid 地图中的标记时如何设置标记片段?

How to set a marker snippet when the user taps on the marker in osmdroid map?

以下是我的实现,当我点击它时我看不到我的标记上的任何描述。我什至浏览了很多资源,但找不到有效的资源。寻找积极的出路。

public Marker addMarker(GeoPoint p) {

    Marker marker = new Marker(osm);
    marker = new Marker(osm);
    marker.setPosition(p);
    osm.getOverlays().add(marker);
    marker.setAnchor(Marker.ANCHOR_CENTER, Marker.ANCHOR_BOTTOM);
    marker.setIcon(getResources().getDrawable(R.drawable.black));
    marker.setTitle("Marker");
    marker.setSnippet("Snippet marker");
    marker.setSubDescription("SubDescription marker");
    return marker;

}

您的代码是正确的,应该可以工作。您应该使用最新版本的 openstreetmap 库并相应地修改代码。 Latest version 目前是 5.6.5。

快速制作的示例给出了这个结果(点击后):

我不得不注释掉这一行:

marker.setIcon(getResources().getDrawable(R.drawable.black));

因为我没有drawable

类 您正在使用的 osmbonuspack 不再存在,因为它们已移至 osmdroid 库。您将不得不更改您的导入(例如 org.osmdroid.views.overlay.Marker 等)。您可以完全删除 osmbonuspack 依赖项,因为您提供的代码不需要它。

您将不得不更改图块源的结构:

osm.setTileSource(TileSourceFactory.MAPNIK);

(但请记住,openstreetmap 瓦片有 a usage policy。)

最后说明:标记的常见问题是当您设置自定义 onMarkerClickListener 时,不会调用默认实现。您需要通过调用 marker.showInfoWindow() 从侦听器打开标记 window。但这不是你的问题。