Наложения карты отсутствуют до поворота экрана

Здесь я могу получить и отобразить текущее местоположение пользователей на карте, я могу получить и проанализировать данные JSON Google Places в массивы. Проблема в том, что, хотя текущее наложение местоположения отображается, дополнительные наложения не будут отображаться до тех пор, пока я не поверну экран с книжной на альбомную. Он продолжает работать нормально, даже если я поворачиваю его обратно в портрет.

    // call to retrieve and parse json data
    Intent i = new Intent(this,HttpExample.class);    
    startActivity(i);  

    List<Overlay> mapOverlays;
    mapOverlays = mapView.getOverlays();
    mapView.getOverlays().clear();

    // display current location overlay
    GeoPoint point = new GeoPoint((int)(lat * 1E6), (int)(lon *1E6));   
    controller.animateTo(point);
    Drawable drawable = this.getResources().getDrawable(R.drawable.mark_red);
    itemizedOverlay = new MapItemizedOverlay(drawable,this);

    OverlayItem overlayItem = new OverlayItem(point, "", "");

    itemizedOverlay.addOverlay(overlayItem);
    mapOverlays.add(itemizedOverlay);

    // Go through loaded arrays to display additional overlays
    drawable = this.getResources().getDrawable(R.drawable.mark_blue);
    itemizedOverlay = new MapItemizedOverlay(drawable, this);

    for(int r=0; r<10; r++)
        {
            GeoPoint point2 = new GeoPoint((int)(lat_coordinates[r]*1E6), (int)(lng_coordinates[r]*1E6));
            overlayItem = new OverlayItem(point2, "", "");
            itemizedOverlay.addOverlay(overlayItem);
            mapView.invalidate(); 
        }

    itemizedOverlay.addOverlay(overlayItem);
    mapOverlays.add(itemizedOverlay);
    mapView.invalidate();    
  }


// When the activity starts up, request updates 
@Override
protected void onResume() {
    super.onResume();
   locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 10,
            1000*60*1, this);
}

person Charles Dodds    schedule 28.11.2012    source источник
comment
Где класс HttpExample хранит данные JSON? Возможно, у вас нет данных при первом вызове onCreate, и когда вы поворачиваете экран, onCreate вызывается снова, когда данные уже проанализированы, поэтому вы получаете результаты. Дайте нам больше деталей...   -  person v0d1ch    schedule 28.11.2012


Ответы (1)


Я добавил оверлеи в AsyncTask и сделал

    @Override
    protected void onPostExecute(Void result) {
        mapView.invalidate();
    }

Чтобы показать наложения после завершения. Идеи таковы: обязательно вызовите invalidate() в вашем MapView в потоке пользовательского интерфейса после того, как все наложения были добавлены.

person Yaroslav Mytkalyk    schedule 30.11.2012