【发布时间】:2011-08-31 07:47:02
【问题描述】:
我有一个问题已经让我发疯了好几天 - 我在网上搜索过,但无法找到这个简单问题的答案。
我正在编写一个 Android 应用程序,它使用地图在特定位置显示图钉。当用户点击其中一个图钉时,我想显示一个包含一些其他详细信息的信息窗口。简单!
我有一个扩展 MapActivity(并包含 MapView)的类和另一个扩展 Overlay 的类(请注意,我没有使用ItemizedOverlay 由于引脚数量和性能太慢)。在 Overlay 类中有一个命中测试例程,它确定用户是否点击了一个图钉,如果是这样,将在图钉上方显示一个带有详细信息的简单矩形。一切正常,但看起来并不那么好。
我想显示一个漂亮的语音气泡标注,它还会包含一个或两个按钮来执行其他操作。经过大量环顾后,我找到了this blog post,它似乎符合要求。该帖子强调了这样一个事实,即我放置在 MapActivity 上的 MapView 是一个 ViewGroup,因此可以包含其他视图,即代表我的语音气泡标注的视图。但是,虽然我可以按照部分源代码进行操作,但在连接时遇到了问题 - 这就是我需要帮助的地方。
我已经创建了我的 9patch 图像和包含它的布局,作为测试,如果我将代码放在 MapActivity 类中,那么我可以显示标注。问题是我需要能够确定用户点击了哪个图钉,以便我可以获得坐标和相关信息,这由 Overlay 处理。
那么,我该如何连接,以便当用户点击 Overlay 上的图钉时,会调用 MapActivity 以将新的“标注视图”添加到 MapView 的适当位置以及相关文本?
更新:
好吧,我花了更多时间查看上面提到的the sample project cited in the blog post,现在有了一个可行的实现。我之前因为它使用 ItemizedOverlay 而忽略了它,但这种方法足够合理。基本上我已经修改了我的 Overlay 类以接受 MapView 作为构造函数中的参数,所以现在我可以访问它而无需回调 MapActivity。这听起来很简单,但我试图让 Overlay 去做它需要做的事情,即显示标记,而不必修补父 MapView。事实上,它现在可以工作了,我可以继续编写其余的代码。
【问题讨论】:
标签: android android-layout android-maps