如何在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
相关产品推荐
相关产品推荐

