Ошибка маркера карт Google - PullRequest
0 голосов
/ 12 марта 2012

Я пытаюсь поместить маркер на карту, и я сделал это, но проблема в том, что он показывает все маркеры. Предыдущие и последние. Я не хочу показывать предыдущие маркеры, а просто хочу показатьмаркер на том месте, где недавно щелкнули. Все остальные маркеры не должны быть видны

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

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;
}

1 Ответ

0 голосов
/ 12 марта 2012

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

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

попробуй,

mapView.getOverlays().clear();
mapView.invalidate();
mapView.getOverlays().add(new MapOverlay(p)); 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...