在当前的实现中,我只是将国家/地区添加到查询中,但这种逻辑不正确。
$.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中,如果失败,则第二次将在所有世界中。
答案 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'
});
您还希望对查询值进行编码,以确保特殊字符不会导致任何问题。