2

在过去的一个月里,我用地图API写了一个应用程序,例如Google Map api和我国家的其他api。它们封装得很好,易于使用。然后我想弄清楚这个api是如何构建和组织的。

在这个过程中,我发现了三个开源项目,osmand、mapsforge 和 osmdroid。随着学习的进行,我遇到了一些问题。

帮助解释

图片是安卓谷歌地图应用程序的截图,它显示了一个基本地图、一些标记和一个信息窗口。众所周知,用户可以触摸标记和信息窗口,并且可以响应触摸手势。


第一个问题来了。

1.标记和信息窗口是View/ViewGroup还是刚刚绘制在底图上的图片元素?哪个选择更好?

  • 在 osmand 中,标记是图片元素,而信息窗口是自定义对话框。

奥斯曼

  • 在 mapsforge 中,只有标记,标记是一个图片元素。

地图锻造

  • 在osmdroid中,它们都是图片元素。

osmdroid


至于标记和信息窗口的触摸事件。

  • 在osmand中,用户可以在地图上长按,会出现信息窗口。用户也可以通过触摸窗口做进一步的事情。当长按事件激活时,其中一个图层会拦截该事件并通过那些抽象层进行调度,直到遇到可以消耗它的特定层。经过复杂的计算和处理,该点会出现信息窗口。标记可以稍后放置,触摸不响应。

  • mapsforge 没有为标记实现触摸事件。

  • 至于 osmdroid ,我还没有深入研究。

这三者的marker和信息窗口的触摸事件句柄实现不如google map api和我之前使用的其他api那么完整。


这是我的想法?

如果它们是视图,则 MapView 应该是 ViewGroup 或者是容器(ViewGroup)和 BaseMap(View)的组合。

  • 好处:也许处理触摸事件更容易。
  • 缺点:地图移动时要考虑好MapView与它们的相对关系。

如果是图片元素,MapView 可以只是 View(或 ViewGroup)。

  • 好处:上面所说的相对关系不是问题
  • 缺点:触摸事件要计算好,处理好。

目前:

那么第二个问题来了:</p>

2.我们应该如何选择Marker和MapView的基类组合?每种组合的优点和缺点是什么?

在 mapsforge google 组中的讨论

如果您分享您的想法,我将不胜感激!

4

0 回答 0