如何防止谷歌地理编码器返回其他国家/地区的结果

joh*_*ith 5 javascript api google-maps google-maps-api-3 google-geocoding-api

我正在使用谷歌地理编码器,只能返回德国的结果

这是我的功能的相关部分

    ...
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({"address":address,"region":"DE" }, function(results, status) {
        if (status == google.maps.GeocoderStatus.OK) {
            if (results[0].geometry.location) {
                completeGeo(results[0],address);
            } else {
                completeGeo(null,address);
            }

     ...
Run Code Online (Sandbox Code Playgroud)

但如果我地理编码"cuvry"也发现在德国的街道

google返回例如"Cuvry,France",它位于region参数之外

如何阻止Google地理编码器返回不在某个国家/地区的结果?我的意思是返回,如果国家代码匹配则不检查回调.

foo*_*bar 13

这可能使用组件过滤器."成分": "国:DE"

var geocoder = new google.maps.Geocoder();
geocoder.geocode({"address":address, "componentRestrictions":{"country":"DE"} },
function(results, status) {
    if (status == google.maps.GeocoderStatus.OK) {
        if (results[0].geometry.location) {
            completeGeo(results[0],address);
        } else {
            completeGeo(null,address);
        }
});
Run Code Online (Sandbox Code Playgroud)

  • 这会导致"未捕获的InvalidValueError:未知属性组件" (3认同)

Mr *_*ose 3

当我将其更改为 geocoder.geocode({"address":address, "componentRestrictions":{"country":"DE"} }, 德国时,我的搜索结果找到了越南。

我已将其更改为:

geocoder.geocode( {'address':address + ', Deutschland'}, function(results, status)
Run Code Online (Sandbox Code Playgroud)

这对于用自己的语言命名的国家/地区名称效果很好。