【问题标题】:google maps redraws after clicking back button点击后退按钮后谷歌地图重绘
【发布时间】:2012-03-26 15:51:05
【问题描述】:

我的应用程序中有一个带有不同标记的谷歌地图。当我点击一个标记 (onTap()) 时,会出现一个新的详细信息窗口,其中包含有关特定位置的一些信息。我的问题是,当我单击返回时,整个地图都会重新绘制。我可以看到它,因为每次我打开信息窗口并单击后退按钮时,标记的阴影都会变暗。此外,它总是会缩小到我当前的位置(-> 触发整个 onResume() 方法)。

如何避免每次都重新绘制地图?

叠加项目类:

@Override
public boolean onTap(int index) {
    OverlayItem item = mOverlays.get(index);
    Item item = map.get(item);

    Intent intent = new Intent();
    intent.setClass(mContext, SomeExampleClass.class);
    mContext.startActivity(intent);

    return true;
}

地图类:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.map);

    mapView = (MapView) findViewById(R.id.mainmap);
    mapView.invalidate();

    mapView.setBuiltInZoomControls(true);   

    dbZugriff = new DatabaseAccess(this);

    mylocationoverlay = new MyLocationOverlay(this, mapView);
    mc = mapView.getController();

}


@Override
protected void onResume() {

    super.onResume();

    mylocationoverlay.enableMyLocation();


    mapView.getOverlays().add(mylocationoverlay);
    mylocationoverlay.runOnFirstFix(new Runnable(){

        @Override
        public void run() {
            GeoPoint myLocation = mylocationoverlay.getMyLocation();
            mc.animateTo(myLocation);
            mc.setZoom(16);

            mapView.postInvalidate();
        }

    });

      SharedPreferences prefs = getSharedPreferences("prefs",Context.MODE_PRIVATE);

      SpecialitiesSelection specialitiesSelection = SpecialitiesSelection.loadFromPreferences(prefs, "");

    Cursor resultat = dbZugriff.createCursor(specialitiesSelection); 

    mapOverlays = mapView.getOverlays(); 

    List<Item> list = new ArrayList<Item>();

    if (resultat.moveToFirst()){
        do{

        Item daten = Item.createFromCursor(resultat);
        list.add(daten);

        }
        while(resultat.moveToNext());            
    }

Drawable drawable = this.getResources().getDrawable(R.drawable.ic_launcher);
itemizedoverlay = new  ItemOverlay(drawable,this,list);

    mapOverlays.add(itemizedoverlay);

}

【问题讨论】:

    标签: android redraw


    【解决方案1】:

    每次您从 SomeExampleClass 按 BACK 时都会调用您的 onResume()。在onResume(),你正在做你说你不想发生的一切。因此,将此代码移至其他位置(例如,onCreate())。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 2012-11-03
      • 2013-12-22
      相关资源
      最近更新 更多