Android Google Maps v2-更新标记(Z索引和WindowsAdapter状态问题)
我正在将现有的交通应用程序从Android Google Maps v2-更新标记(Z索引和WindowsAdapter状态问题),android,google-maps,Android,Google Maps,我正在将现有的交通应用程序从MapView升级到Google地图v2。我有两个核心要求,但从覆盖层到标记层带来了以下问题: 要求1)地图需要在固定位置标记的初始层中播种。然后再加一层标记来描绘车辆的位置。如果车辆具有相同的LatLng,则应始终在站点位置的顶部渲染 使用MapView中的覆盖图,可以通过操纵生成覆盖图的方法的顺序来控制Z索引,这非常有效: this.GenerateStations(); //Renders a base of Station Overlays this.Gen
MapView
升级到Google地图v2。我有两个核心要求,但从覆盖层到标记层带来了以下问题:
要求1)地图需要在固定位置标记的初始层中播种。然后再加一层标记来描绘车辆的位置。如果车辆具有相同的LatLng
,则应始终在站点位置的顶部渲染
使用MapView
中的覆盖图,可以通过操纵生成覆盖图的方法的顺序来控制Z索引,这非常有效:
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
?
然而,当使用谷歌地图v2时,地图似乎是
随机呈现所有标记,而不考虑每个标记的顺序
创建并添加实例。这是公认的缺陷吗
地图还是有解决办法
无法控制标记或标记的渲染顺序
然而,当使用谷歌地图v2时,地图似乎是
随机呈现所有标记,而不考虑每个标记的顺序
创建并添加实例。这是公认的缺陷吗
地图还是有解决办法
无法控制标记或标记的渲染顺序
地图似乎正在随机渲染所有标记
否。标记从屏幕顶部渲染到底部,按当前y值排序
设置图标后是否尝试调用showInfoWindow
vMarker.setIcon(BitmapDescriptorFactory.fromResource(imageResource));
vMarker.showInfoWindow();
编辑:或
new Handler().post(new Runnable() {
public void run() {
vMarker.showInfoWindow();
}
});
你从马辛的回答中得出的意见是非常合理的。一种专门的集群
关于setIcon
之后消失的信息窗口:我报告说,就在他们发布了一个具有此功能的版本之后。您可以在此处对此发表评论:
地图似乎正在随机渲染所有标记
否。标记从屏幕顶部渲染到底部,按当前y值排序
设置图标后是否尝试调用showInfoWindow
vMarker.setIcon(BitmapDescriptorFactory.fromResource(imageResource));
vMarker.showInfoWindow();
编辑:或
new Handler().post(new Runnable() {
public void run() {
vMarker.showInfoWindow();
}
});
你从马辛的回答中得出的意见是非常合理的。一种专门的集群
关于
setIcon
之后消失的信息窗口:我报告说,就在他们发布了一个具有此功能的版本之后。你可能想在这里对此发表评论:我也有同样的问题
我有一个自定义标记,指示当前位置和其他POI标记
如果按给定顺序添加标记,首先是当前位置,然后是POI,则标记在地图上的顺序是正确的。poi标记位于当前位置标记的上方
我的代码如下所示:
map.clear();
map.addMarker(currentPosition)
for (MarkerOptions poi : poiMarkerOptions) {
map.addMarker(poi);
}
我也有同样的问题 我有一个自定义标记,指示当前位置和其他POI标记 如果按给定顺序添加标记,首先是当前位置,然后是POI,则标记在地图上的顺序是正确的。poi标记位于当前位置标记的上方 我的代码如下所示:
map.clear();
map.addMarker(currentPosition)
for (MarkerOptions poi : poiMarkerOptions) {
map.addMarker(poi);
}
谢谢,我想我可以做以下工作作为解决办法:创建一组新的车辆图标,其中有一个图形,当车距相等时指示它在车站,然后隐藏车站图标,直到车辆移动。但是,这意味着我仍然必须在车辆上设置图标,这导致了我提到的第二个问题。我还在研究。。。谢谢你提供的信息。谢谢,我想我可以做以下工作作为解决办法:创建一组新的车辆图标,其中有一个图形,当车位相等时,显示它在车站,然后隐藏车站图标,直到车辆移动。但是,这意味着我仍然必须在车辆上设置图标,这导致了我提到的第二个问题。我还在研究。。。感谢您提供的信息。感谢您澄清标记生成的顺序。另外,
showInfoWindow()
也没有产生预期的结果,感谢谷歌的票证链接,我发布了我的问题。@CampbellGolf如果在发布的Runnable
中这样做会怎么样?我知道这可能因为眨眼而无法接受,但也许总比什么都没有好。请参阅我上面的编辑。感谢您澄清标记生成的顺序。另外,showInfoWindow()
也没有产生预期的结果,感谢谷歌的票证链接,我发布了我的问题。@CampbellGolf如果在发布的Runnable
中这样做会怎么样?我知道这可能因为眨眼而无法接受,但也许总比什么都没有好。见我的编辑上面。