有没有什么办法可以实现缩放监听器,只要缩放级别发生变化就可以触发事件。到目前为止,我已经使用onUserinteraction方法手动检查变化的缩放级别。 另一件事是我想要动态地添加/删除叠加层。到目前为止,我所做的是在onUserinteraction方法中,我调用一个函数,它使用mapOverlays.add()函数动态地添加叠加层,并且实际上添加会动态发生。但不知何故,mapOverlays.remove()函数不删除覆盖Android地图覆盖问题
//Function for adding first set of markers
public void setOverlay()
{
worldLength = World.length;
mapOverlays = mapView.getOverlays();
drawable0 = this.getResources().getDrawable(R.drawable.marker);
itemizedOverlay0 = new MyItemizedOverlay(drawable0);
for (int i = 0; i < worldLength; i++)
{
itemizedOverlay0.addOverlay(World[i]);
}
mapOverlays.add(itemizedOverlay0);
mapView.postInvalidate();
}
//Function for adding second set of markers
public void setOverlay1()
{
mapView.setStreetView(true);
usaLength = USA.length;
mexicoLength = Mexico.length;
mapOverlays = mapView.getOverlays();
drawable1 = this.getResources().getDrawable(R.drawable.marker);
itemizedOverlay1 = new MyItemizedOverlay(drawable1);
itemizedOverlay2 = new MyItemizedOverlay(drawable1);
for (int i = 0; i < usaLength; i++) {
itemizedOverlay1.addOverlay(USA[i]);
}
for (int i = 0; i < mexicoLength; i++) {
itemizedOverlay2.addOverlay(Mexico[i]);
}
mapOverlays.add(itemizedOverlay1);
mapOverlays.add(itemizedOverlay2);
mapView.postInvalidate();
}
public void onUserInteraction() {
super.onUserInteraction();
if(mapView.getZoomLevel()>3)
{
mapOverlays.remove(itemizedOverlay0);
setOverlay1();
//the above happens
}
else if(mapView.getZoomLevel()<=3 && mapOverlays.size()>5)
{
mapOverlays.remove(itemizedOverlay1);
mapOverlays.remove(itemizedOverlay2);
//the above doesn't
setOverlay();
}
else if(mapView.getZoomLevel()<=3)
{
}
}
这是好的,一定会尝试和回来,我需要知道尽快我无法使用mapOverlays.remove(itemizedOverlayname);任何直接的帮助将不胜感激.....感谢百万 –
你试过调用MapView.invalidate()而不是mapView.postInvalidate()? invalidate()应该根据文档立即重绘地图(至少对于我之前完成的所有地图案例)。 – momo
已经完成并且没有工作,我只注意到remove方法只会删除覆盖对象的第一次出现,但是我的错误代码会多次添加相同的覆盖,因此我无法看到结果。将修复和正确回答我自己的问题....顺便说一句我正在实施乌拉圭回合变焦监听者的想法! –