You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenStreetMap的MapView如何设置点击监听器获取经纬度

osmdroid MapView 点击获取经纬度实现方案

osmdroid 的 MapView 不支持直接设置普通的 View.OnClickListener,需要通过添加自定义 Overlay 监听点击手势实现需求,修改步骤如下:

  1. 先在 Activity 头部补充导入依赖:
import android.view.MotionEvent;
import org.osmdroid.views.overlay.Overlay;
  1. 在onCreate方法内,完成 mapView 初始化的代码之后,添加以下点击监听逻辑:
// 新增地图点击获取经纬度逻辑
mapView.getOverlays().add(new Overlay(this) {
    @Override
    public boolean onSingleTapUp(MotionEvent e, MapView mapView) {
        // 将屏幕点击坐标转换为地图经纬度坐标
        GeoPoint clickPosition = (GeoPoint) mapView.getProjection().fromPixels((int) e.getX(), (int) e.getY());
        double lat = clickPosition.getLatitude();
        double lon = clickPosition.getLongitude();
        // 填充到表单输入框,保留6位小数保证精度
        et_lat.setText(String.format("%.6f", lat));
        et_long.setText(String.format("%.6f", lon));
        // 可选:点击后自动将地图中心点移动到点击位置
        mapController.animateTo(clickPosition);
        return true;
    }
});
  1. 注意修正布局文件的小错误:你当前布局中edit_lat_etape的hint属性值误写为"Longitude (Appuyez sur la carte à l'emplacement souhaité)",需要改为纬度对应的提示文本,避免用户混淆。
    修改完成后点击地图任意点位,经纬度会自动填充到对应表单字段中。

内容的提问来源于stack exchange,提问作者NeoKerd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 03:15:04