2017-09-14 117 views
2

下面是我的实现,当我点击它时,我看不到任何关于我的标记的描述。我甚至经历了很多来源,但无法取得工作。寻找积极的出路。如何在用户点击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; 

} 
+0

您是否看到没有文字的气泡(InfoWindow)或者根本没有看到气泡?有没有代码在创建后将onClickListener设置为标记? –

+0

我没有看到气泡,我为每个标记创建了新的对象geopoints – himagaran

+0

好的,再次提出问题:您是否在任何地方调用marker.setOnMarkerClickListener(...)?这不是在你发布的代码中,但我不知道你如何处理退货价值。 –

回答

1

您的代码是正确的,应该工作。您应该使用最新版本的openstreetmap库并相应地修改代码。 Latest version目前为5.​​6.5。

快速制作的例子给这个结果(TAP后):

enter image description here

我不得不注释掉该行:

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

因为我没有被拉伸。

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

你将不得不改变瓷砖源的建设:

osm.setTileSource(TileSourceFactory.MAPNIK); 

(但请记住有a usage policy为OpenStreetMap的瓷砖。)

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

+0

嘿,谢谢你的努力,我很高兴它在你的工作。我需要澄清一件事:此链接https://drive.google.com/file/d/0ByXacZESDmJRQWYzblNINEY5Zjg/view显示我的外部库与他们的版本下libs部分。即使将库升级到最新版本后,我仍然面临同样的问题 – himagaran

+0

@himagaran为什么使用过时版本的库?你的项目中有osmdroid 4.3。旧版本可能存在错误和问题。我通常可以通过阅读库的源代码来找到问题的解决方案。但我不认为我会去学习那些旧版本,因为它不值得。另外你为什么不使用gradle?您已经通过gradle询问了osmdroid的最新版本:https://stackoverflow.com/questions/45930978/i-get-an-error-on-getinstance-method-even-though-i-followed-the-osmdroid-docum你得到了你的问题的答案。 –

+0

由于我的电脑内存不足,我停止了gradle。无论如何,我会再次检查并让你知道。再次感谢 – himagaran

相关问题