在android中获取点击地图的坐标

时间:2010-11-14 11:44:10

标签: android map touch coordinates tap

我正在尝试制作这样的东西:我有一个mapactivity,当用户点击地图时,它会显示该位置的坐标。我已经覆盖了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);
}

}

6 个答案:

答案 0 :(得分:17)

尝试以下方法。

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

答案 1 :(得分:7)

此处未使用

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

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

答案 2 :(得分:3)

使用Android Maps v2的现代答案是使用OnMapClickListener,它可以在地图上轻触LatLng。

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

答案 3 :(得分:2)

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

我在使用onTap()时遇到的问题是,当你进行双指缩放时它也会被触发,这不是我的应用所需要的。因此,如果您需要双指缩放,我的代码应该可以满足您的需求。

答案 4 :(得分: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;
 }
}

答案 5 :(得分:0)

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