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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 20:32:20