【问题标题】:How to communicate from Android Map Overlay to MapView如何从 Android Map Overlay 与 MapView 进行通信
【发布时间】: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


    【解决方案1】:

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

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

    希望这会有所帮助, 斯蒂芬

    【讨论】:

    • 感谢 Stéphane,我已使用该教程来整理命中测试并尽我所能。生成的信息组件太小,我希望将来也能够添加按钮,我认为这种方法不会让我这样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多