WPF C#应用中使用Geocoding.Microsoft获取Win7位置遇构造器问题
解决MicrosoftGeocoder无法直接实例化的问题
你遇到的问题是因为MicrosoftGeocoder的实例化逻辑和你参考的GoogleGeocoder不一样——它并没有公开可直接调用的构造函数,而是通过静态方法来创建实例的。
正确的实例化方法
最新版本的Geocoding.Microsoft库使用MicrosoftGeocoder.Create静态方法来生成实例,只需要传入你的Bing Maps API密钥即可:
public MainWindow() { InitializeComponent(); MainMap.Mode = new AerialMode(true); MainMap.Focus(); MainMap.Culture = "ar-sa"; MainMap.MouseDoubleClick += new MouseButtonEventHandler(MapWithPushpins_MouseDoubleClick); // 替换你原来的实例化代码为这一行 IGeocoder geocoder = MicrosoftGeocoder.Create("YOUR_BING_MAPS_API_KEY"); }
自定义配置(可选)
如果需要设置更多细节(比如指定Bing Maps API版本、统一配置文化信息等),可以使用带配置选项的重载方法:
public MainWindow() { InitializeComponent(); MainMap.Mode = new AerialMode(true); MainMap.Focus(); MainMap.Culture = "ar-sa"; MainMap.MouseDoubleClick += new MouseButtonEventHandler(MapWithPushpins_MouseDoubleClick); var geocodingOptions = new MicrosoftGeocodingOptions { ApiVersion = ApiVersion.V8, // 指定使用Bing Maps API V8版本 Culture = "ar-sa" // 统一设置地理编码请求的文化信息 }; IGeocoder geocoder = MicrosoftGeocoder.Create("YOUR_BING_MAPS_API_KEY", geocodingOptions); }
额外提醒
请确保你的Bing Maps API密钥是有效的,并且已经在Azure门户中启用了**地理编码(Geocoding)**相关的权限,否则调用API时可能会返回权限错误。
内容的提问来源于stack exchange,提问作者Sam Ibraheem
相关产品推荐
相关产品推荐

