Frage

Wie füge ich eine Markierung auf einer bestimmten Stelle in der Karte?

habe ich diesen Code, zeigt die Koordinaten der berührten Stelle. Und ich möchte, dass ein Marker Pop oder in derselben Stelle jedes Mal gezeigt werden, es berührt wird. Wie mache ich das?

 public boolean onTouchEvent(MotionEvent event, MapView mapView) {   
                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.invalidate();
                }                            
                return false;
            }
War es hilfreich?

Lösung

Sie möchten ein OverlayItem . Die Google Mapview Tutorial zeigt, wie man den Einsatz es.

Andere Tipps

Wenn Sie eine Markierung in die berührte Stelle hinzufügen möchten, dann sollten Sie Folgendes tun:

public boolean onTouchEvent(MotionEvent event, MapView mapView) {              
        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 MarkerOverlay(p));
                    mapView.invalidate();
            }                            
            return false;
        }

Überprüfen Sie, ob Im MarkerOverlay nachdem die Meldung angezeigt Aufruf. Um diese Arbeiten zu machen, müssen Sie eine andere Overlay erstellen, MapOverlay:

class MarkerOverlay extends Overlay{
     private GeoPoint p; 
     public MarkerOverlay(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(), /*marker image*/);            
        canvas.drawBitmap(bmp, screenPts.x, screenPts.y-50, null);         
        return true;
     }
 }

Ich wünsche Sie nützlich finden

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top