Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当用户点击osmdroid映射中的标记时,如何设置标记片段?_Java_Android_Osmdroid - Fatal编程技术网

Java 当用户点击osmdroid映射中的标记时,如何设置标记片段?

Java 当用户点击osmdroid映射中的标记时,如何设置标记片段?,java,android,osmdroid,Java,Android,Osmdroid,下面是我的实现,当我点击它时,我看不到我的标记上的任何描述。我甚至查了很多资料,但找不到一个有用的。寻找积极的出路 public Marker addMarker(GeoPoint p) { Marker marker = new Marker(osm); marker = new Marker(osm); marker.setPosition(p); osm.getOverlays().add(marker); marker.setAnchor(Mar

下面是我的实现,当我点击它时,我看不到我的标记上的任何描述。我甚至查了很多资料,但找不到一个有用的。寻找积极的出路

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库并相应地修改代码。目前是5.6.5

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

我不得不评论这句话:

marker.setIcon(getResources().getDrawable(R.drawable.black));
因为我没有抽绳器

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

您必须更改磁贴源的构造:

osm.setTileSource(TileSourceFactory.MAPNIK);
(但请记住,openstreetmap的平铺是免费的。)


最后一点注意:标记的常见问题是,当您在MarkerClickListener上设置自定义时,默认实现不会被调用。您需要通过调用marker.showInfoWindow()从侦听器打开marker窗口。但这不是你的问题。

你看到的是没有文本的气泡(信息窗口)还是根本看不到气泡?有没有代码在创建后将onClickListener设置为标记?我根本看不到气泡,我为每个标记geopointsOk创建了新对象,第二个问题:您是否在任何地方调用marker.setOnMarkerClickListener(…)?它不在你发布的代码中,但我不知道你如何处理返回值。不,我没有使用任何标记侦听器,我很不确定如何才能做到这一点。无论如何,您可以在这里看到我的实现:您使用的是哪个版本的osmdroid和osmbonuspack?你的代码不能用最新版本编译。嘿,谢谢你的努力,我很高兴它能在你的版本中工作。我需要澄清一件事:这个链接在libs部分显示了我的外部库及其版本。即使将库升级到最新版本,我仍然面临同样的问题versions@himagaran为什么要使用过时版本的库?您的项目中有osmdroid 4.3。旧版本中可能存在bug和问题。我通常可以通过阅读库的源代码来找到问题的解决方案。但我不认为我会去研究那些旧版本,因为它不值得。你为什么不使用gradle呢?您已经通过gradle询问过最新版本的osmdroid:并且您已经得到了问题的答案。由于电脑内存不足,我停止了gradle。无论如何,我会再次检查并让您知道。谢谢again@himagaran我懂了。格雷德尔可能很贪婪。您可以下载最新版本的zip(我的答案中有下载页面的链接)。有一个带有osmdroid库的aar文件。据我所知,即使没有gradle,你也可以使用它。(检查一下)。@himagaran好的,我找到了。我用一个示例更新了我的回答,说明了如何解决问题。