【问题标题】:How to set a marker snippet when the user taps on the marker in osmdroid map?当用户点击osmdroid地图中的标记时如何设置标记片段?
【发布时间】:2017-09-18 16:44:27
【问题描述】:

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

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;

}

【问题讨论】:

  • 您看到没有文字的气泡(信息窗口)还是根本没有看到气泡?创建后是否有任何代码将 onClickListener 设置为标记?
  • 我根本看不到气泡,我为每个标记地理点创建新对象
  • 好的,第二个问题:你在任何地方调用 marker.setOnMarkerClickListener(...) 吗?它不在您发布的代码中,但我不知道您如何处理返回值。
  • 不,我没有使用任何标记侦听器,我很不确定如何做到这一点。无论如何,你可以在这里看到我的实现:drive.google.com/file/d/0ByXacZESDmJRV1FHVEZ1SVY4R1k/…
  • 您使用的是哪个版本的 osmdroid 和 osmbonuspack?您的代码无法使用最低版本编译。

标签: java android osmdroid


【解决方案1】:

您的代码是正确的,应该可以工作。您应该使用最新版本的 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() 从您的侦听器打开标记窗口。但这不是你的问题。

【讨论】:

  • 嘿,感谢您的努力,我很高兴它在您的工作中工作。我需要澄清一件事:这个链接drive.google.com/file/d/0ByXacZESDmJRQWYzblNINEY5Zjg/view 在 libs 部分显示了我的外部库及其版本。即使将库升级到最新版本,我仍然面临同样的问题
  • @himagaran 为什么使用过时版本的库?您的项目中有 osmdroid 4.3。旧版本中可能存在错误和问题。我通常可以通过阅读库的源代码来找到问题的解决方案。但我不认为我不会去研究那些旧版本,因为它不值得。另外你为什么不使用gradle?您已经通过 gradle 询问了最新版本的 osmdroid:stackoverflow.com/questions/45930978/… 并且您得到了问题的答案。
  • 由于我的电脑内存不足,我停止了 gradle。无论如何,我会再次检查并让您知道。再次感谢
  • @himagaran 我明白了。 Gradle 可能是贪婪的。您可以下载最新版本的 zip(我的答案是下载页面的链接)。有 osmdroid 库的 aar 文件。据我所知,即使没有 gradle,您也可以使用它。 (检查这个stackoverflow.com/questions/23777423/aar-in-eclipse-ant-project)。
  • @himagaran 好的,我找到了。我用一个如何解决问题的示例更新了我的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-16
  • 1970-01-01
  • 2014-03-17
  • 2019-06-07
相关资源
最近更新 更多