在Android中点击地图获取坐标

16

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

}


这是一个简单的HTML标记,表示一个段落中只有一个右大括号。

这将有助于确保... - a4ankur
6个回答

17

请尝试以下步骤。

编写一个继承自Overlay类的类,并覆盖onTap()方法。然后将你的叠加层添加到你的MapView中。当你在地图上某个位置点击时,一个代表你点击位置的GeoPoint对象会传递给onTap()方法。


7

onClick()在这里没有使用。你需要重写onTouchEvent()方法。这是一个示例项目,演示如何使用onTouchEvent()来拖放ItemizedOverlay地图标记。

通过触摸的屏幕坐标,您可以使用Projection(从MapViewgetProjection()方法中获取)将其转换为纬度和经度。


4

链接已失效。 - Manoj Perumarath

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;
 }
}

2
我在这个问题中提供了我实现的一些细节: 如何在Android MapView上响应轻触,但忽略捏合缩放? 使用onTap()的问题是当你进行捏合缩放时它也会被触发,这不是我的应用程序所需要的。因此,如果你需要捏合缩放,我的代码应该能够满足你的需求。

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接