2010-11-18 7 views
0

У меня есть приложение googlemap, которое отображает два элемента (itemizedoverlay class), и у меня есть кнопка «Обновить». Когда я нажимаю кнопку обновления, я хочу удалить элементы с карты и снова поставить те же элементы, но с новыми значениями широты и долготы (у меня есть служба, которая реализует поля широты и долготы, которые у меня есть в sharedPreferences, и также я recibe другое положение в комплекте)Как разместить позиции позиций в googlemap?

что я делаю неправильно? когда я пытаюсь мой код, элементы из карты не делает быть удалены .... просто появляются новые элементы ... но я хочу, чтобы удалить старые

updateButton.setOnClickListener(new OnClickListener() { 
      public void onClick(View v) { 
       mapOverlays.clear(); 
       updateMyPosition(); 
       updateFriendPosition(); 
      } 
     }); 

и это мои две функции:

private void updateFriendPosition() 
    { 
     Bundle bundle = this.getIntent().getExtras();//get the intent & bundle passed by X 
     userText.setText(bundle.getString("user")); 
     permissionText.setText(bundle.getString("permission")); 
     lastUpdateText.setText(bundle.getString("lastupdate")); 
     String coordinates[] = {bundle.getString("lat"), bundle.getString("lon")}; 
     lat = Double.parseDouble(coordinates[0]); 
     lng = Double.parseDouble(coordinates[1]); 
     p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6)); 
     OverlayItem overlayitem1 = new OverlayItem(p, bundle.getString("user"), "Hi Friend!"); 
     itemizedoverlay.addOverlay(overlayitem1); 
     mapOverlays.add(itemizedoverlay);// dibujo la estrella con la posicion actual del friend 

     mc.animateTo(p); ///nos centra el mapa en la posicion donde esta nuestro amigo 
     mc.setZoom(10); /// ajusta el zoom a 10   
    } 

private void updateMyPosition() 
    { 
     String coordinates[] = {settings.getString("mylatitude", null),settings.getString("mylongitude", null)};  
     lat = Double.parseDouble(coordinates[0]); 
     lng = Double.parseDouble(coordinates[1]); 
     p = new GeoPoint((int) (lat * 1E6), (int) (lng * 1E6)); 
     OverlayItem overlayitem1 = new OverlayItem(p, "Me", "My Position"); 
     itemizedoverlay2.addOverlay(overlayitem1); 
     mapOverlays.add(itemizedoverlay2);//dibujo mi icono para mostrarme a mi 
    } 

я также судимый с Invalidate() на MapView, но это не работает ... до сих пор рисуют старые детали ...

ответ

1

Похоже, это основано на SDK учебнике. Вы добавили две вещи в itemizedoverlay, а другую. Вам нужно добавить метод в HelloItemizedOverlay, а именно «ясно»

public void clear() { 
    mOverlays.clear(); 
} 

Вызов этого метода перед вызовом

itemizedoverlay.addOverlay(overlayitem1); 
+0

спасибо! хе-хе, возможно, вы тоже можете мне помочь с этим вопросом? http://stackoverflow.com/questions/4216231/how-to-actual-the-positions-of-the-items-in-a-googlemap – NullPointerException

+0

Рад, что сработало. Ваша ссылка на ваш другой вопрос указывает на это! – NickT

+0

О, извините, проверьте это: http://stackoverflow.com/questions/4217090/why-this-thread-doesnt-work – NullPointerException

Смежные вопросы