在android中点击地图获取坐标

Posted

技术标签:

【中文标题】在android中点击地图获取坐标【英文标题】:Get coordinates on tapping map in android 【发布时间】:2011-05-09 19:17:43 【问题描述】:

我正在尝试做这样的事情:我有一个地图活动,当用户点击地图时,它会显示该位置的坐标。我已经覆盖了 onclick 方法,但它甚至没有被调用。有什么想法吗?

public class MapPoint extends MapActivity implements OnClickListener 

@Override
public void onCreate(Bundle savedInstanceState) 

    super.onCreate(savedInstanceState);
    setContentView(R.layout.mappoints);

    MapView map = (MapView)findViewById(R.id.mapview);
    map.setOnClickListener(this);
    map.setBuiltInZoomControls(true);
    map.getController().setZoom(18);
    map.getController().setCenter(new GeoPoint(39735007, -8827330));




@Override
protected boolean isRouteDisplayed() 
    // TODO Auto-generated method stub
    return false;


public void onClick(View arg0) 
        Toast.makeText(this, "text", Toast.LENGTH_SHORT);

【问题讨论】:

this will help sure.. 【参考方案1】:

使用 android Maps v2 的现代答案是使用 OnMapClickListener,它为您提供在地图上点击的 LatLng。

https://developer.android.com/reference/com/google/android/gms/maps/GoogleMap.OnMapClickListener.html

【讨论】:

【参考方案2】:

试试这个:

private class OverlayMapa extends Overlay 

 @Override
 public void draw(Canvas canvas, MapView mapView, boolean shadow) 
 
   ...
 

 @Override
 public boolean onTap(GeoPoint point, MapView mapView) 
 
   Context contexto = mapView.getContext();
   String msg = "Lat: " + point.getLatitudeE6()/1E6 + " - " + 
                "Lon: " + point.getLongitudeE6()/1E6;

   Toast toast = Toast.makeText(contexto, msg, Toast.LENGTH_SHORT);
   toast.show();

  return true;
 

【讨论】:

【参考方案3】:

我在这个问题中加入了一些我的实现细节: How do I respond to a tap on an Android MapView, but ignore pinch-zoom?

我发现使用 onTap() 的问题是当你捏缩放时它也会被触发,这不是我的应用所需要的。所以如果你需要捏缩放,我的代码应该能满足你的需要。

【讨论】:

【参考方案4】:

就像@CommonsWare 说的,你需要使用onTouch() 函数而不是onClick()。这是一个示例,这正是您所需要的:http://mobiforge.com/developing/story/using-google-maps-android

【讨论】:

【参考方案5】:

试试下面的。

编写一个派生自Overlay 类的类并覆盖onTap() 方法。然后您可以将您的叠加层添加到您的MapView。 GeoPoint 对象,表示您点击的位置,当您在地图上的某个位置点击时,将传递给 onTap() 方法。

【讨论】:

【参考方案6】:

onClick() 此处未使用。您将需要覆盖onTouchEvent()。 Here is a sample project 显示使用 onTouchEvent() 拖放 ItemizedOverlay 地图图钉。

给定触摸的屏幕坐标,您可以使用Projection(来自MapView 上的getProjection())将其转换为纬度和经度。

【讨论】:

以上是关于在android中点击地图获取坐标的主要内容,如果未能解决你的问题,请参考以下文章

Android中百度地图如何重新获取坐标

百度android地图如何获取地图中心点的经纬坐标

QML-Maps-Qt,用地图点击屏幕,处理并获取坐标

android 百度地图标记坐标问题

Android:使用谷歌地图实时获取当前坐标

android 百度地图上marker点移动要怎么处理