Добавить маркер на коснунное местоположение с помощью карты Google в Android

StackOverflow https://stackoverflow.com/questions/2171429

Вопрос

Как добавить маркер на определенное место на карте?

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

 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;
            }
Это было полезно?

Решение

Вы хотите добавить Оверливать. Отказ То Учебник Google MapView показывает, как его использовать.

Другие советы

Если вы хотите добавить маркер в коснутое местоположение, то вы должны сделать следующее:

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

Убедитесь, что я звоню MarkerOverlay после появления сообщения. Для того, чтобы сделать это произведения, вам нужно создать еще одно наложение, 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;
     }
 }

Я надеюсь, что вы найдете это полезно!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top