gpt4 book ai didi

android - 如何从 MapView 中删除特定的 ItemizedOverlay?

转载 作者:行者123 更新时间:2023-11-29 22:04:07 26 4
gpt4 key购买 nike

我的应用程序中有 2 个 ItemizedOverlay 实例,一个用于 CurrentLocation,另一个用于其他。我已将这 2 个叠加层添加到 MapView

我想在 map 的刷新按钮倾斜时更新 CurrentLocation 叠加层。如果我这样做了,这意味着它还显示了以前的当前位置,以及新的当前位置。如何删除上一个?

但我还需要显示另一个叠加层。

我已将 ItemizedOverlay 子类化:

MyItemizedOverlay currentOverlay = new MyItemizedOverlay(pushPinDrawable);
MyItemizedOverlay anotherOverlay = new MyItemizedOverlay(drawable);

刷新按钮的代码:

if (currentGeo != null) {
mapView.getOverlays().remove(currentOverlay);
mapVite();
mapOverlays = mapView.getOverlays();
myLocationOverlay = new OverlayItem(currentGeo, "My Location", mapTime.format(new Date(myLocationTime)));
// (currentGeo is the updated current geo point.)
currentOverlay.addOverlay(myLocationOverlay);
mapOverlays.add(currentOverlay);
mapController.animateTo(currentGeo);
} else {
Toast.makeText(this, "Your Current Location is temporarily unavailable", Toast.LENGTH_LONG).show();
}

有什么想法吗?

最佳答案

你应该有这样的

public void onLocationChanged(Location location) {
if (mMyOverlay == null) {
mMyOverlay = new myOverlay(getResources().getDrawable(R.drawable.arrow), MyMap);
MyMap.getOverlays().add(mMyOverlay);
} else {
MyMap.getOverlays().remove(mMyOverlay);
MyMap.invalidate();
mMyOverlay = new myOverlay(getResources().getDrawable(R.drawable.arrow), MyMap);
MyMap.getOverlays().add(mMyOverlay);
}
if (location != null) {
MyMap.invalidate();
GeoPoint MyPos = new GeoPoint(microdegrees(location.getLatitude()), microdegrees(location.getLongitude()));
MyController.animateTo(MyPos);
mMyOverlay.addPoint(MyPos, "My position", "My position");
}

关于android - 如何从 MapView 中删除特定的 ItemizedOverlay?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11219777/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com