2011-06-29 11 views
0

私は助けてください、私は、複数のオーバーレイを追加してmapViewを持つProject Xyzに取り組んでおり、userChoiceごとにオーバーレイを削除しています。Android MapView

は、ユーザーの友人のお気に入りの場所を示すものと,,,,より明確に、それはユーザーの選択に従ってオーバーレイをフィルタリングすることには...

PostLoginServiceHomeBeanは、ArrayListのNearByFavoritePlacesListオブジェクト

と私のArrayListですこのI」によって、すなわち、

entry.getNearByFavoritePlacesList()。取得(I).getGpsLatitude() .trim()

複数の長ロングフォームサーバーを取得しています...

コードはf9を実行し、マップに複数のオーバーレイを追加して、オーバーレイtapの場所の名前とアドレスを表示します。どのようにマップからオーバーレイを削除できますか。 ..

私は、コードを囲むています:以下のコードを見つけてください:

私を助けてください....

package com.gogozing.app; 

import java.util.ArrayList; 
import java.util.List; 

import android.content.Context; 
import android.content.Intent; 
import android.graphics.drawable.Drawable; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.CheckBox; 
import android.widget.CompoundButton; 
import android.widget.CompoundButton.OnCheckedChangeListener; 
import android.widget.Toast; 

import com.gogozing.service.LocateServices; 
import com.gogozing.util.Data; 
import com.gogozing.util.PostLoginServiceHomeBean; 
import com.google.android.maps.GeoPoint; 
import com.google.android.maps.ItemizedOverlay; 
import com.google.android.maps.MapActivity; 
import com.google.android.maps.MapController; 
import com.google.android.maps.MapView; 
import com.google.android.maps.Overlay; 
import com.google.android.maps.OverlayItem; 

public class HomeMapActivity extends MapActivity { 
    private MapView myMapView; 
    private MapController myMapController; 
    private List<Overlay> mapOverlays; 
    private HomeMapItemizedOverlay itemizedOverlay; 
    private Context context; 
    private PostLoginServiceHomeBean entry; 
    private GeoPoint initGeoPoint; 
    private CheckBox peopleCheckBox, friendsCheckBox, favoritesCheckBox; 

    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.home_map_layout); 
     context = this; 
     backButton = (Button) findViewById(R.id.HomeMapLeftBackButton); 
     eventsBtn = (Button) findViewById(R.id.EventsBtn); 
     profileBtn = (Button) findViewById(R.id.ProflieBtn); 
     homeBtn = (Button) findViewById(R.id.HomeBtn); 
     locateButton = (Button) findViewById(R.id.LocateBtn); 
     socializeButton = (Button) findViewById(R.id.SocializeBtn); 
     peopleCheckBox = (CheckBox) findViewById(R.id.HomeMapViewPeopleCheckBox); 
     favoritesCheckBox = (CheckBox) findViewById(R.id.HomeMapViewFavoritesCheckBox); 
     friendsCheckBox = (CheckBox) findViewById(R.id.HomeMapViewFriendsCheckBox); 


     homeBtn.setBackgroundResource(R.drawable.home_f); 
     myMapView = (MapView) findViewById(R.id.mapviewHome); 


     myMapView.setBuiltInZoomControls(true); 
     // Set satellite view 
     myMapController = myMapView.getController(); 

     // Get the current location in start-up 
     try { 

      entry = Data.postLoginServiceHomeMain.get(0); 

      favoritesCheckBox 
        .setOnCheckedChangeListener(new OnCheckedChangeListener() { 
         public void onCheckedChanged(CompoundButton buttonView, 
           boolean isChecked) { 
          if (isChecked) { 
           viewFavoritePlaces(); 
          } else 
           removeFavoritePlaces(); 

         } 
        }); 

     } catch (Exception e) { 
      Log.e(Data.LOG, e.getMessage(), e); 
     } 
    } 

    void viewFavoritePlaces() { 
     for (int i = 0; i < entry.getNearByFavoritePlacesList().size(); i++) { 
      double latitude = Double.valueOf(
        **entry.getNearByFavoritePlacesList().get(i).getGpsLatitude() 
          .trim()**).doubleValue(); 
      double longitude = Double.valueOf(
        entry.getNearByFavoritePlacesList().get(i) 
          .getGpsLongitude().trim()).doubleValue(); 
      Log.v(Data.LOG1, " Latitude " + latitude + " Longitude " 
        + longitude); 

      String name = entry.getNearByFavoritePlacesList().get(i) 
        .getMerchantName(); 
      String address = entry.getNearByFavoritePlacesList().get(i) 
        .getAddress(); 
      initGeoPoint = new GeoPoint((int) (latitude * 1E6), 
        (int) (longitude * 1E6)); 

      mapOverlays = myMapView.getOverlays(); 
      Drawable drawable = this.getResources().getDrawable(
        R.drawable.map_store_place); 

      itemizedOverlay = new HomeMapItemizedOverlay(drawable, this); 
      OverlayItem overlayItem = new OverlayItem(initGeoPoint, name, 
        address); 

      itemizedOverlay.addOverlay(overlayItem); 

      mapOverlays.add(itemizedOverlay); 
      myMapController.animateTo(initGeoPoint); 
      myMapController.setZoom(15); 
     } 
    } 
    void removeFavoritePlaces() { 
     //List<Overlay> mapOverlays = myMapView.getOverlays(); 

     mapOverlays.remove(itemizedOverlay); 

    } 



    @Override 
    protected boolean isRouteDisplayed() { 
     // TODO Auto-generated method stub 
     return false; 
    }; 

    public class HomeMapItemizedOverlay extends ItemizedOverlay<OverlayItem> { 
     private ArrayList<OverlayItem> mOverlays = new ArrayList<OverlayItem>(); 
     private Context mContext; 

     public HomeMapItemizedOverlay(Drawable defaultMarker, Context context) { 
      super(boundCenterBottom(defaultMarker)); 
      mContext = context; 
     } 

     public void addOverlay(OverlayItem overlay) { 
      mOverlays.add(overlay); 
      populate(); 
     } 
     public void removeOverlay(OverlayItem overlay) 
     { 
      mOverlays.remove(overlay); 
      populate(); 
     } 

     @Override 
     protected OverlayItem createItem(int i) { 
      return mOverlays.get(i); 
     } 

     @Override 
     public int size() { 
      return mOverlays.size(); 
     } 

     @Override 
     protected boolean onTap(int index) { 
      OverlayItem item = mOverlays.get(index); 
      AlertDialog.Builder dialog = new AlertDialog.Builder(mContext); 
      dialog.setTitle(item.getTitle()); 
      dialog.setMessage(item.getSnippet()); 
      dialog.show(); 
      return true; 
     } 
    } 

} 

答えて

2
ここ

私はあなたの質問から取得していますどのような一つの解決策を与えています...オーバーレイアイテムにLat Longを追加する必要があります。あなたが特定の緯度経度を持つItemizedoverlayを削除したい場合は、マップオーバーレイからチェックして削除することができます。

+0

kk ,, thx .... –