如何通过特定国家/地区的邮政编码以地图为中心?

时间:2014-10-23 13:02:13

标签: javascript google-maps google-maps-api-3

我正在使用Google Maps API v3来处理地图。此外,我还使用输入/文本和输入/按钮让用户查找邮政编码。

然后地图应该以该邮政编码为中心。它确实如此!但在一些邮政编码上,我来到了非常奇特的地方。

服务器,客户端和其他任何东西都在德国,所以我想将所有查询锁定到德国。例如,如果我想以“92224”为中心,我看不到巴伐利亚,我迷路了立陶宛。

我使用以下代码from this answer按命令居中:

function codeAddress(zipCode) {
    geocoder.geocode( { 'address': zipCode}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        //Got result, center the map and put it out there
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
            map: map,
            position: results[0].geometry.location
        });
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }

现在我该如何实现此查询仅以德国邮政编码为中心?(如果有帮助,德国邮政编码总是5个数字长。)

1 个答案:

答案 0 :(得分:1)

您想设置componentRestrictions并按国家/地区进行过滤。

请参阅documentation

示例

function codeAddress(zipCode) {

    geocoder.geocode({
        'address': address, "componentRestrictions":{"country":"DE"}
    }, function (results, status) {

        if (status == google.maps.GeocoderStatus.OK) {

            map.setCenter(results[0].geometry.location);

            var marker = new google.maps.Marker({
                map: map,
                position: results[0].geometry.location
            });

        } else {
            alert("Geocode was not successful for the following reason: " + status);
        }
    });
}

<强>演示:

JSFiddle demo

注意:

作为旁注,您无法按多个国家/地区进行过滤。这是long awaited feature,Google至今仍未实施。

修改: 2017-04-19

Google现在已经实施了一种最多可以过滤5个国家/地区的方法:请参阅https://issuetracker.google.com/issues/35821685我不会对这有多少有用的评论...