我正在尝试编写一个Android应用程序,允许用户搜索通用目的地(例如“加油站”)并向其提供最多约5个附近位置供您选择。屏幕结果将显示中心的用户位置,并且可能的目标选项将由标记指示。
诀窍是我不想从其起始比例重新缩放地图,因此屏幕上可能看不到某些可能的目的地。我想动态绘制一个可点击的方向指示器(例如箭头),该指示器从用户位置发出并指向任何离屏目的地。如果有多个离屏目的地,我可能想要缩放箭头长度来指示相对距离。如果用户点击箭头,则应将它们“远程传送”到屏幕外位置。
关于如何最好地实现这一点的任何想法?我在叠加层上找到的唯一信息是使用静态文件(大多数叠加层似乎只是标记的.PNG文件;一个示例的路径是从XML文件中提取的)。我需要根据方向计算箭头 到达目的地(箭头指向的方向)和到该位置的相对距离(箭头长度),因此覆盖是我在运行时必须提出的。
我认为主要的挑战是绘制可点击的箭头,但我想到的另一个问题是,我应该使用Google Maps API进行搜索,还是这项工作更适合Google Places API?
谢谢!
答案 0 :(得分:0)
我想我们应该暂时保留传送,直到动态绘制的可点击覆盖问题解决为止!
动态绘制的可点击覆盖仅仅是Overlay
的子类。您将覆盖一个或两个draw()
方法,以使用Canvas
2D绘图API渲染箭头。您将覆盖onTap()
以通知地图上的点按,以查看他们是否点击了箭头。您可以通过MapView
将覆盖图添加到addOverlays().add()
。
大多数叠加层似乎只是标记的.PNG文件
那些通常是ItemizedOverlay
类。这实现起来要简单得多,特别是如果你是那些开发人员(像我一样),在Canvas
方面都是大拇指。但是,您很可能无法使用ItemizedOverlay
获得所需的内容。
我需要根据到达目的地的方向(箭头指向的方向)和到该位置的相对距离(箭头长度)来计算箭头,因此叠加层是我在跑步时必须提出的时间。
正确。如果需要,您可以使用Projection
来帮助在像素空间和地理空间(纬度和经度)之间进行转换。
请注意,这一切都假设您尝试使用MapActivity
和MapView
。如果您愿意,也欢迎您使用WebView
或普通浏览器显示您自己的基于JavaScript的地图。