如何在 Bing 地图 Ajax 中优先搜索国家/地区

How can I prioritize search country in Bing Maps Ajax

在目前的实现中,我只是添加国家来查询,但这个逻辑是不正确的。

$.ajax({
        url: 'https://dev.virtualearth.net/REST/v1/Locations/'
        + searchString + ' ' + currentCountry + '?c=' + currentCulture + ...,
        dataType: 'script'
    });

但如果我尝试从 currentCountry 中搜索城市,我会找到 currentCountry,但找不到 searchString。

Example: searchString = Boston, currentCountry = Australia

第二种方法 - 从查询中完全删除 currentCountry,但这会导致另一个错误。 我不会在 currentCountry

找到不那么出名的地方
Example: searchString = Moscow, currentCountry = USA.

此查询的结果将是 - 俄罗斯莫斯科,而不是华盛顿莫斯科,D.C。

是否可以指定搜索国家/地区? 搜索的第一次尝试将在当前国家/地区进行,如果失败,则第二次将在整个世界进行搜索。

根据 Find a Location by Address,您可以根据 特定国家/地区 .

的一组地址值获取纬度和经度坐标

示例:

查询:

http://dev.virtualearth.net/REST/v1/Locations/US/Moscow?o=xml&key=BingMapsKey

Note: A structured URL specifies the location data for the country (US in this example) as part of the URL path.

将 return 个地点 Moscow 位于美国。

如果您阅读 Bing 地图的最佳实践,它实际上建议在地理编码时使用非结构化 URL 格式而不是结构化格式,因为它会提高结果的准确性:https://msdn.microsoft.com/en-us/library/dn894107.aspx

为了将结果限制为单个国家/地区,只需将该国家/地区附加到查询即可。

您的代码很接近,但应该有一个逗号,并且您将使用查询参数,因为您使用的格式适用于反向地理编码坐标。这是您的代码的修改版本:

$.ajax({
        url: 'https://dev.virtualearth.net/REST/v1/Locations?q='
        + encodeURIComponent(searchString + ', ' + currentCountry) + '?c=' + currentCulture + ...,
        dataType: 'script'
    });

您还想对查询值进行编码以确保特殊字符不会导致任何问题。