Android动态绘制,可点击地图叠加?

时间:2012-03-05 16:00:15

标签: android google-maps

我正在尝试编写一个Android应用程序,允许用户搜索通用目的地(例如“加油站”)并向其提供最多约5个附近位置供您选择。屏幕结果将显示中心的用户位置,并且可能的目标选项将由标记指示。

诀窍是我不想从其起始比例重新缩放地图,因此屏幕上可能看不到某些可能的目的地。我想动态绘制一个可点击的方向指示器(例如箭头),该指示器从用户位置发出并指向任何离屏目的地。如果有多个离屏目的地,我可能想要缩放箭头长度来指示相对距离。如果用户点击箭头,则应将它们“远程传送”到屏幕外位置。

关于如何最好地实现这一点的任何想法?我在叠加层上找到的唯一信息是使用静态文件(大多数叠加层似乎只是标记的.PNG文件;一个示例的路径是从XML文件中提取的)。我需要根据方向计算箭头 到达目的地(箭头指向的方向)和到该位置的相对距离(箭头长度),因此覆盖是我在运行时必须提出的。

我认为主要的挑战是绘制可点击的箭头,但我想到的另一个问题是,我应该使用Google Maps API进行搜索,还是这项工作更适合Google Places API?

谢谢!

1 个答案:

答案 0 :(得分:0)

  

我想我们应该暂时保留传送,直到动态绘制的可点击覆盖问题解决为止!

动态绘制的可点击覆盖仅仅是Overlay的子类。您将覆盖一个或两个draw()方法,以使用Canvas 2D绘图API渲染箭头。您将覆盖onTap()以通知地图上的点按,以查看他们是否点击了箭头。您可以通过MapView将覆盖图添加到addOverlays().add()

  

大多数叠加层似乎只是标记的.PNG文件

那些通常是ItemizedOverlay类。这实现起来要简单得多,特别是如果你是那些开发人员(像我一样),在Canvas方面都是大拇指。但是,您很可能无法使用ItemizedOverlay获得所需的内容。

  

我需要根据到达目的地的方向(箭头指向的方向)和到该位置的相对距离(箭头长度)来计算箭头,因此叠加层是我在跑步时必须提出的时间。

正确。如果需要,您可以使用Projection来帮助在像素空间和地理空间(纬度和经度)之间进行转换。

请注意,这一切都假设您尝试使用MapActivityMapView。如果您愿意,也欢迎您使用WebView或普通浏览器显示您自己的基于JavaScript的地图。