在 Windows 8/Bing 地图应用程序中绘制坐标
Posted
技术标签:
【中文标题】在 Windows 8/Bing 地图应用程序中绘制坐标【英文标题】:Plotting geocoordinates in a Windows 8/Bing maps app 【发布时间】:2012-10-20 01:28:09 【问题描述】:我正在使用 Bing 地图制作 C#/XAML Windows 8 应用程序。我正在复制一堆 Windows Phone 7 代码,而我在简单地绘制地理坐标时遇到了问题。这是 WP7 代码:
GeoCoordinate mapCenter = new GeoCoordinate(37.784, -122.408);
map1.Center = mapCenter;
但是,当我尝试在 Win 8 中实例化 mapCenter 时(并且我确实使用小写 Geocoordinate 而不是 GeoCoordinate),我收到一条错误消息,指出“Windows.Devices.Geolocation.Geocoordinate 不包含采用 2 个参数的构造函数” .
我有点难过,因为我计划使用 Geocoordinates 相当多,但我不确定如何弄清楚 Geocoordinate 构造函数究竟需要什么。
谢谢,
阿曼达
编辑以修复代码缩进
【问题讨论】:
【参考方案1】:Windows.Devices.Geolocation.Geocoordinate
类不能直接实例化。另外,请记住,您使用的命名空间专门用于从设备中检索位置数据。
首先,您需要通过Geolocator.GetGeopositionAsync
获取Geoposition
的实例。
然后您可以从Geoposition.Coordinate
获取Geocoordinate
实例。
如果您只想将地图以给定的纬度和经度居中(并且您正在使用 Bing Maps for Windows Store Apps SDK),那么您似乎应该改用 Location
类(如Map.Center
的类型为 Location
)。
【讨论】:
【参考方案2】:您的代码和您的错误输出说明了两件不同的事情。我遇到了同样的问题,请确保您在代码中使用 GeoCoordianate 中的大写 C。地理坐标中的小写 C 用于获取手机位置。
地图控件的 Center 属性需要 System.Device.Location 命名空间中的 GeoCoordinate 类型的值。如果您使用 Windows.Devices.Geolocation 命名空间中的定位服务,则必须将 Windows.Devices.Geolocation.Geocoordinate 值转换为 System.Device.Location.GeoCoordinate 值,以便与 Map 控件一起使用。
您可以通过下载 Windows Phone 工具包获得一种扩展方法来执行此转换,以及对 Maps API 的其他有用扩展。如果您想编写自己的代码,这里有一个方法示例,您可以使用该方法将 Geocoordinate 转换为 >GeoCoordinate:
来自http://msdn.microsoft.com/en-US/library/windowsphone/develop/jj207045(v=vs.105).aspx#BKMK_converting
【讨论】:
以上是关于在 Windows 8/Bing 地图应用程序中绘制坐标的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 8 中生成地图应用程序的 URL [关闭]
OpenLayers 3 - Bing 地图不会在 Windows 应用程序中加载