【问题标题】:GoogleMaps V2 android get marker iconGoogle Maps V2 android 获取标记图标
【发布时间】:2013-11-19 15:38:10
【问题描述】:

我目前正在实施 GoogleMapsV2 并尝试移植 MapsV1 中的旧功能。在 V1 中,我能够继承 OverlayItem 并保存我放入的图标。现在我必须基于模型对象创建一个MarkerOption,将其添加到GoogleMap 以获取一个标记。

因为 Marker 类是最终类,而 GoogleMaps 没有提供处理它的方法(例如 SQLiteCursorFactory),所以我觉得无法取回我放入的图标。

如果我保留MarkerOptions 对象,我可以返回一个BitmapDescriptor,它只有一个(混淆)方法aW(),它返回一个b 对象。

我很确定位图一定在这个对象内部的某个地方,因为它是在GoogleMap 上绘制的。从标记中取回它的最佳方法是什么。

我目前在 HashMap<Marker, ModelObj> 内创建时将标记映射到我的模型,但是每次我想访问它时我都必须从那里重新创建图标。这感觉简直是错误的,我想知道是否有更好的方法来访问它。

【问题讨论】:

    标签: android bitmap google-maps-android-api-2 marker


    【解决方案1】:

    我很确定位图必须在该对象内部的某个位置,因为它是在 GoogleMap 上绘制的。

    这远非确定。地图由另一个进程渲染。因此,虽然Bitmap 处于 进程中,但它可能不在您的进程中。

    从标记中取回它的最佳方法是什么。

    你没有。这是一个只写 API。

    我目前在 HashMap 中创建时将标记映射到我的模型,但每次我想访问它时我都必须从那里重新创建图标。

    然后自己缓存。现在MarkergetId(),这可能比使用Marker本身作为key要好。但是然后要么把你的图标塞进ModelObj,要么有一个单独的位图缓存。您必须自己确定 CPU 与 RAM 的权衡是否需要缓存或重新生成图标。

    【讨论】:

    • 从未注意到 marker.getId()。谢谢你的提示。如果没有其他我错过的解决方案,那么我将自己缓存它们。
    • @RafaelT:“从来没有注意到 marker.getId()”——是的,我不确定他们什么时候添加的,因为我也错过了一段时间。
    • 你能否确认一下关于标记图标的 api 上面写着“......一旦你创建了标记,你就不能更改图标。”完全是错误的,因为有一个可以工作的setIcon(BitmapDescriptor) 方法? developers.google.com/maps/documentation/android/reference/com/…
    • @RafaelT: setIcon() 是 Maps V2 API 中相对较新的新增功能。如果文档的某些部分声称标记图标无法更改,请提交问题以修复这些文档。
    • 我会这样做,但在我看来他们并不真正关心,因为我对我已经提交的问题没有任何回应。但那是另一个故事。感谢您的见解
    猜你喜欢
    • 2013-04-28
    • 2017-08-10
    • 2013-06-14
    • 2013-08-31
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多