android - Osmdroid 4.3 - 双击叠加层

标签 android osmdroid

我已将 Osmdroid 4.3 导入到我的应用程序中,但在点击显示的叠加层时遇到问题。当我在 map 上移动后,我必须双击叠加层才能显示我想要的内容,然后,当我点击另一个叠加层时,它只需要单击一下(=正确的方式,应用程序已编程)。

问题是,有人在使用最新的 osmdroid 轻触 map 上的对象时遇到过同样的问题吗?或者我之前的版本 3.0.8 有什么变化吗?

谢谢

编辑:

Osmdroid 3.0.8 - 我可以平移 map ,浏览 map ,左,右,上,下。我已经在 map 上显示了 POI。我可以通过双击来进行缩放,通过捏合缩放来放大或缩小。我单击 POI,然后显示有关 POI 的所有可用详细信息。

Osmdroid 4.3 - 我可以平移 map ,与以前一样浏览。唯一的区别是,当我点击 POI 项目时, map 不执行任何操作。然后,如果我再次点击该点或者我想要平移 map ,那也没关系。现在,两个手势相同,并且我可以看到显示的 POI 详细信息。将 POI 添加到 map 时,我使用扩展 OverlayItem 的自定义类。为什么需要双标签?为什么在我看来,显示的 OverlayItems 现在与 map “分离”了?因为第一次触摸它们似乎我必须“先激活它们”,然后再触摸一次(无论是哪种触摸)完成我的工作并显示 POI 详细信息。

我没有对源代码进行任何更改,仅交换了库。我做错了什么?

编辑2:

我想我已经发现了 osmdroid 3.0.8 和 4.3 之间的变化。在我的应用程序中,我正在评估 OnItemGestureListener 及其方法 onItemSingleTap 单击了哪个 POI。在 OnTouchEvent 中我显示 POI 详细信息。在Osmdroid 3.0.8中,当点击POI时,有调用层次结构1)onItemSingleTap 2)onTouchEvent。在 osmdorid 4.3 中,它们的调用被切换,因此 1)OnTouchEvent 2)OnItemSingleTap,所以我的第一次触摸不会生成任何内容。

最佳答案

我想我已经发现了 osmdroid 3.0.8 和 4.3 之间的变化。在我的应用程序中,我正在评估 OnItemGestureListener 及其方法 onItemSingleTap 单击了哪个 POI。在 OnTouchEvent 中我显示 POI 详细信息。在Osmdroid 3.0.8中,当点击POI时,有调用层次结构1)onItemSingleTap 2)onTouchEvent。在 osmdorid 4.3 中,它们的调用被切换,因此 1)OnTouchEvent 2)OnItemSingleTap,所以我的第一次触摸不会生成任何内容。

解决方案是:在 onTouchEvent 中,我从触摸手指的位置获取 IGeoLocation。然后我查找数据库并找到所有在我触摸周围坐标且距离低于阈值的 POI。必须为每个缩放设置不同的阈值(例如 +-0,010 lat 和 +-0,10 lon)。例如。当缩放为16时,阈值为0,001(当仅单击1个POI时,我不想看到远处点的选择),当缩放为12时,我将阈值设置为0,125,因此我的手指仅选择一些在一起的POI而不是整个 map 。因此,如果您的应用能够触摸多个 POI,请注意 Osmdroid 4.3 中的这一更改。

关于android - Osmdroid 4.3 - 双击叠加层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29118575/

相关文章:

android - Backendless - Twitter 登录时出现模糊引用错误

java - Android GET 和 POST 请求

android - OSMdroid 在运行时更改 TileSource

android - OSMDROID android 4.2 : Mapquest: As of july 11, 2016 direct tile access 已停产

android - 如何在用户端下载 osmdroid tiles?

android - 抽屉导航始终可见(一点点)

java - 我想在不挂起程序的情况下运行一个函数

java - 用 Paint 给位图着色?

java - osm 奖励包迁移崩溃

java - 如何以编程方式移动 mapView (osmdroid)