【发布时间】:2014-01-03 13:49:05
【问题描述】:
我正在将现有的交通应用程序从 MapView 升级到 GoogleMap v2。我有 2 个核心要求,但从叠加层转移到标记会引入以下问题:
要求 1) - 地图需要播种初始层的固定位置标记。然后附加一层标记来描绘车辆的位置。如果车辆具有相同的LatLng,则它们应始终呈现在车站位置的顶部。
在MapView 中使用叠加层,Z-Index 可以通过操纵生成叠加层的方法的顺序来控制,这非常有效:
this.GenerateStations(); //Renders a base of Station Overlays
this.GenerateVehicles(); //Renders vehicles on-top of Station Overlays
但是,在使用 GoogleMap v2 时,无论创建和添加每个标记实例的顺序如何,地图似乎都在随机渲染所有标记。 这是公认的地图缺陷还是有解决方法?
要求 2) - 每个标记都实现 InfoWindowAdapter 以显示有关标记的信息。在后台线程上,车辆标记的位置和图标每秒更新一次,如果 LatLng 与车站标记 LatLng 相同,则图标需要更改。问题是,如果我更新标记的位置或片段,InfoWindowAdapter 会随着图标移动位置,但是当我更新setIcon 属性时,我会丢失InfoWindowAdapter:
//This works perfectly, InfoWindowAdapter snippet updates too
vMarker.setPosition(vehicleLatLng);
vMarker.setSnippet(vehicleSnippet);
//Causes the InfoWindowAdapter to disappear
vMarker.setIcon(BitmapDescriptorFactory.fromResource(imageResource));
它在调用 setIcon 时出现,标记被销毁并重建。 是否有另一种方法来更新标记的图标而不必丢失InfoWindowAdapter 的状态?
【问题讨论】:
标签: android google-maps