在 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上添加谷歌素材图标“我的位置”?