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

如何在UWP中获取用户点击MapControl的GPS坐标?

获取UWP MapControl点击位置的GPS坐标

嘿,这个需求我之前做UWP地图应用时刚好实现过,完全没问题!UWP的MapControl本身就提供了专门的事件来处理地图点击,直接用MapTapped事件就能轻松拿到GPS坐标,步骤超简单:

1. 在XAML中绑定事件

首先给你的MapControl添加MapTapped事件绑定,记得先引入Maps命名空间:

<!-- 先在根元素里添加Maps命名空间 -->
<Page
    ...
    xmlns:Maps="using:Windows.UI.Xaml.Controls.Maps">

    <Maps:MapControl x:Name="MyMap" MapTapped="MyMap_MapTapped" />
</Page>

2. 后台代码实现坐标获取

在代码后台实现事件处理方法,这里有两种方式,都很方便:

方式一:直接用事件参数里的现成坐标

MapInputEventArgs自带的Location属性已经帮你把点击的屏幕位置转换成了Geopoint,直接用就行:

private void MyMap_MapTapped(MapControl sender, MapInputEventArgs args)
{
    if (args.Location != null)
    {
        // 提取纬度和经度
        double latitude = args.Location.Position.Latitude;
        double longitude = args.Location.Position.Longitude;
        
        // 这里就可以把坐标用在编辑图标位置的逻辑里啦
        Debug.WriteLine($"点击位置的GPS坐标:纬度 {latitude:F6},经度 {longitude:F6}");
    }
}

方式二:手动转换屏幕偏移量(适合自定义场景)

如果你需要基于屏幕偏移量做额外处理,可以用MapControl.GetLocationFromOffset方法,把点击的屏幕坐标(args.Position)转换成地理坐标:

private void MyMap_MapTapped(MapControl sender, MapInputEventArgs args)
{
    Geopoint tappedLocation;
    // 尝试转换屏幕偏移量为地理坐标
    if (MyMap.GetLocationFromOffset(args.Position, out tappedLocation))
    {
        double lat = tappedLocation.Position.Latitude;
        double lon = tappedLocation.Position.Longitude;
        // 执行你的编辑逻辑
    }
}

额外提示

  • 不管是鼠标点击还是手指触摸,这个事件都会正常触发,适配不同输入设备完全没问题
  • 确保你的MapControl已经正确初始化并加载了地图服务(比如设置了Credentials,如果需要的话),这样坐标转换才会准确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:50:17