2012-03-12 3 views
0

Я пытаюсь поместить маркер на карту, и я это сделал, но проблема в том, что он показывает все маркеры.previous & последние также. Я не хочу показывать предыдущие маркеры, а не просто хотят, чтобы показать маркер на месте, которое кликнули recently.All другие маркеры не следует рассматриватьОшибка Google maps marker

Я написал код, с помощью follwing учебника

http://mobiforge.com/developing/story/using-google-maps-android

И мой код

public class SelectLocation extends MapActivity { 
MapView mapView; 
MapController mc; 
GeoPoint p; 
String coordinates[]; 


class MapOverlay extends com.google.android.maps.Overlay 
{ 

    private GeoPoint p; 
    public MapOverlay(GeoPoint p){ 
     this.p = p; 
    } 

    @Override 
    public boolean draw(Canvas canvas, MapView mapView, 
      boolean shadow, long when) 
    { 
     super.draw(canvas, mapView, shadow);     

     //---translate the GeoPoint to screen pixels--- 
     Point screenPts = new Point(); 
     mapView.getProjection().toPixels(p, screenPts); 

     //---add the marker--- 
     Bitmap bmp = BitmapFactory.decodeResource(
       getResources(), R.drawable.pushpin);    
     canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);   
     return true; 
    } 

    public boolean onTouchEvent(MotionEvent event, MapView mapView) 
    { 
     //---when user lifts his finger--- 
     if (event.getAction() == 1) {     
      GeoPoint p = mapView.getProjection().fromPixels(
        (int) event.getX(), 
        (int) event.getY()); 

      Toast.makeText(getBaseContext(), 
        p.getLatitudeE6()/1E6 + "," + 
          p.getLongitudeE6() /1E6 , 
          Toast.LENGTH_SHORT).show(); 
      mapView.getOverlays().add(new MapOverlay(p)); 
      Intent i=new Intent(SelectLocation.this,SetLocat.class); 
      startActivity(i); 

     }        
     return false; 
    }   

} 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.selectlocation); 

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

    mapView.setBuiltInZoomControls(true); 

    mc = mapView.getController(); 
    String coordinates[] = {"1.352566007", "103.78921587"}; 
    double lat = Double.parseDouble(coordinates[0]); 
    double lng = Double.parseDouble(coordinates[1]); 

    p = new GeoPoint(
      (int) (lat * 1E6), 
      (int) (lng * 1E6)); 

    mc.animateTo(p); 
    mc.setZoom(17); 
    MapOverlay mapOverlay = new MapOverlay(p); 


    List<Overlay> listOfOverlays = mapView.getOverlays(); 
    listOfOverlays.clear(); 
    listOfOverlays.add(mapOverlay);   




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

ответ

0

перед этим кодом

mapView.getOverlays().add(new MapOverlay(p)); 

попробовать,

mapView.getOverlays().clear(); 
mapView.invalidate(); 
mapView.getOverlays().add(new MapOverlay(p)); 
+0

Благодаря его работает нормально – user1196969

+0

Хорошо :) Если решить вашу проблему, вы всегда можете Accept ответ, нажав на галочку на левой стороне из ответ. – MKJParekh