在 Android 中使用谷歌地图在触摸位置添加标记

Posted

技术标签:

【中文标题】在 Android 中使用谷歌地图在触摸位置添加标记【英文标题】:Add marker on touched location using google map in Android 【发布时间】:2011-01-11 09:38:16 【问题描述】:

如何在地图中的特定位置添加标记?

我看到这段代码显示了触摸位置的坐标。而且我希望每次触摸时都会弹出或显示在同一位置的标记。我该怎么做?

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;

【问题讨论】:

这能回答你的问题吗? Add Marker on android Google Map via touch or tap 【参考方案1】:

如果您想在触摸的位置添加一个标记,那么您应该执行以下操作:

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;
     
 

我希望你觉得这很有用!

【讨论】:

【参考方案2】:

您想添加一个OverlayItem。 Google Mapview tutorial 展示了如何使用它。

【讨论】:

以上是关于在 Android 中使用谷歌地图在触摸位置添加标记的主要内容,如果未能解决你的问题,请参考以下文章

如何在android的谷歌地图V2上添加谷歌素材图标“我的位置”?

如何在谷歌地图android上设置多个标记?

谷歌地图标记和煎茶触摸 2

Android:谷歌地图位置电池使用率低

Android:如何使用谷歌地图在我的应用中显示用户当前位置?

在谷歌地图android上显示位置