【问题标题】:How to remove a specific ItemizedOverlay from a MapView?如何从 MapView 中删除特定的 ItemizedOverlay?
【发布时间】:2012-06-27 05:11:39
【问题描述】:

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

我想在地图的刷新按钮倾斜时更新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();
}

有什么想法吗?

【问题讨论】:

    标签: android android-mapview itemizedoverlay


    【解决方案1】:

    你应该有一些这样的

    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");
            }
    

    【讨论】:

      【解决方案2】:

      在 mapOverlays 数组中添加 CurrentOverlay 之前,您肯定可以这样做,

      if(mapOverlays.contains(itemizedOverlay))
      {
         mapOverlays.remove(itemizedOverlay);
      }
      mapOverlays.add(itemizedOverlay);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-09-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多