15

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

}

4

6 回答 6

17

试试下面的。

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

于 2010-11-14T13:38:05.717 回答
7

onClick()此处不使用。您将需要覆盖onTouchEvent(). 这是一个示例项目,展示了onTouchEvent()如何使用拖放ItemizedOverlay地图图钉。

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

于 2010-11-14T13:30:51.983 回答
4

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

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

于 2014-04-12T20:14:50.853 回答
2

我在这个问题中提出了一些我的实现细节: 如何响应 Android MapView 上的点击,但忽略捏缩放?

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

于 2011-02-04T00:29:50.157 回答
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;
 }
}
于 2011-08-30T15:47:35.300 回答
0

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

于 2010-11-14T14:37:41.470 回答