如何从Android Map Overlay传递到MapView

时间:2011-08-31 07:47:03

标签: android android-layout android-maps

我有一个让我疯狂了几天的问题 - 我已经在网上搜索了但是找不到一个简单问题的答案。

我正在编写一个Android应用程序,它使用地图在特定位置显示引脚。当用户点击其中一个引脚时,我想显示一个信息窗口,其中包含一些额外的细节。简单!

我有一个类扩展 MapActivity (并包含 MapView ),另一个扩展叠加(注意我没有使用ItemizedOverlay由于引脚数量和性能太慢而导致。在Overlay类中有一个命中测试例程,用于确定用户是否敲击了引脚,如果是,则会在引脚上方显示一个带有详细信息的简单矩形。一切正常,但看起来不太好。

我想显示一个很好的语音气泡标注,它会及时包含一两个按钮来执行其他操作。经过大量的环顾四周,我找到了this blog post,这似乎符合要求。帖子强调了我放置在MapActivity上的MapView是一个ViewGroup,因此可以包含其他视图,即代表我的语音气泡标注的视图。但是,虽然我可以按照部分源代码进行连接,但是我需要一些帮助。

我已经创建了我的9patch图像和一个包含它的布局,作为测试,如果我把代码放在MapActivity类中,那么我可以让callout显示出来。问题是我需要能够确定用户点击了哪个引脚,以便我可以获取坐标和相关信息,这由Overlay处理。

那么,我如何连接它以便当用户点击Overlay上的一个引脚时,调用MapActivity将新的'Callout视图'添加到MapView的相应位置以及相关的文本?

更新

嗯,我花了一点时间来看the sample project cited in the blog post我在上面提到的,现在有一个有效的实施。我之前因为使用了ItemizedOverlay而解雇了这个,但这种方法听起来不错。基本上我已修改我的Overlay类以接受MapView作为构造函数中的参数,所以现在我可以访问它而无需回调到MapActivity。这听起来很简单,但我试图让Overlay做它需要做的事情,即显示标记,而不必修改父MapView。事实是它现在有效,我可以继续编写其他代码。

1 个答案:

答案 0 :(得分:0)

我不确定你究竟在寻找什么。你可以找到一个很好的教程,找出在onTap期间被击中的点,然后检索叠加层并在地图上打印出一些东西。

要显示有关修复位置的信息,您可以将所有信息组件放在xml中,且可见性不可见,并在触摸覆盖时将其更改为可见。

希望这有帮助,  斯特凡