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

时间:2015-09-25 13:53:13

标签: ajax search bing-maps

在当前的实现中,我只是将国家/地区添加到查询中,但这种逻辑不正确。

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

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

Example: searchString = Boston, currentCountry = Australia

第二种方法 - 从查询中删除currentCountry,但它会导致另一个错误。 我不会在currentCountry中找到不那么有名的地方

Example: searchString = Moscow, currentCountry = USA.

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

是否有指定搜索国家/地区的能力? 首先尝试搜索将在currentCountry中,如果失败,则第二次将在所有世界中。

2 个答案:

答案 0 :(得分:1)

根据Find a Location by Address,您可以根据特定国家/地区的一组地址值获取纬度和经度坐标。

示例:

查询:

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

注意:结构化URL指定国家/地区的位置数据   (在此示例中为US)作为URL路径的一部分。

将返回位于美国的Moscow的位置。

答案 1 :(得分:1)

如果你阅读Bing Maps的最佳做法,它实际上建议在进行地理编码时使用非结构化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'
    });

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