Bing Maps REST Toolkit偶现经纬度返回错误问题求助
问题:Bing Maps REST Toolkit返回错误经纬度
使用Bing Maps REST Toolkit时,偶尔会出现返回错误经纬度的情况。比如邮编CV34 6DD,正确坐标应为52.275406, -1.579631,但API返回的却是56.2158352, -2.9440218。
我的代码如下:
var request = new GeocodeRequest(); request.BingMapsKey = bingKey; request.Query = postCode; var result = await request.Execute(); if (result.StatusCode == 200) { var toolkitLocation = (result?.ResourceSets?.FirstOrDefault()) ?.Resources?.FirstOrDefault() as Location; if (toolkitLocation != null) { latitude = toolkitLocation.Point.Coordinates[0]; longitude = toolkitLocation.Point.Coordinates[1]; } }
解决思路与修正方案
问题出在没有限定地理搜索范围,Bing Maps的地理编码服务可能匹配到了其他地区的相似邮编或地点。CV34 6DD是英国的邮编,而返回的错误坐标属于英国苏格兰区域,说明服务默认的全局搜索逻辑优先返回了非目标区域的匹配结果。
修正方法很简单,给请求添加两个关键参数:
- 指定
CountryRegion为"GB"(英国的ISO国家代码),强制服务在英国范围内搜索邮编 - 设置
MaxResults = 1,确保只返回最精准的匹配项
修改后的代码:
var request = new GeocodeRequest(); request.BingMapsKey = bingKey; request.Query = postCode; // 添加区域限定 request.CountryRegion = "GB"; // 只返回最匹配的1条结果 request.MaxResults = 1; var result = await request.Execute(); if (result.StatusCode == 200) { var toolkitLocation = (result?.ResourceSets?.FirstOrDefault()) ?.Resources?.FirstOrDefault() as Location; if (toolkitLocation != null) { latitude = toolkitLocation.Point.Coordinates[0]; longitude = toolkitLocation.Point.Coordinates[1]; } }
这样就能确保服务只在英国的邮编数据库中匹配,避免跨区域的错误结果。
内容的提问来源于stack exchange,提问作者Marcin
相关产品推荐
相关产品推荐

