Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/431.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Google自动完成设置邮政编码/ZIP_Javascript_Html_Google Maps_Google Maps Api 3_Google Places Api - Fatal编程技术网

Javascript 从Google自动完成设置邮政编码/ZIP

Javascript 从Google自动完成设置邮政编码/ZIP,javascript,html,google-maps,google-maps-api-3,google-places-api,Javascript,Html,Google Maps,Google Maps Api 3,Google Places Api,我试图编码,当我在一个文本框中输入一个地址时,它会显示该地址,然后缩短为只有邮政编码-很像下面的gif 遇到此链接,但似乎不起作用-但在正确的线路上 google.maps.event.addDomListener(窗口“加载”,初始化); 函数初始化() { var input=document.getElementById('autocomplete_search'); 变量选项= { 组件限制:{国家:'gb'} }; var autocomplete=new google.maps.

我试图编码,当我在一个文本框中输入一个地址时,它会显示该地址,然后缩短为只有邮政编码-很像下面的gif

遇到此链接,但似乎不起作用-但在正确的线路上


google.maps.event.addDomListener(窗口“加载”,初始化);
函数初始化()
{
var input=document.getElementById('autocomplete_search');
变量选项=
{
组件限制:{国家:'gb'}
};
var autocomplete=new google.maps.places.autocomplete(输入,选项);
var input=document.getElementById('autocomplete_search');
//var autocomplete=new google.maps.places.autocomplete(输入);
autocomplete.addListener('place\u changed',function(){
var place=autocomplete.getPlace();
//place变量将包含您要查找的所有信息。
$('#lat').val(place.geometry['location'].lat());
$('#long').val(place.geometry['location'].lng());
});
}
谷歌在没有显示地图的情况下放置自动完成输入框示例-Tutsmake.com
.集装箱{
填充:10%;
文本对齐:居中;
} 
Google在不显示地图的情况下放置自动完成输入框示例
当输入像内维尔路这样的地址时,它不会显示邮政编码(这就是我想要的)。是否有办法从自动完成地址获取邮政编码


目前无法仅在邮政编码上过滤位置自动完成预测。看看谷歌的问题追踪器

但您可以选择在搜索框中仅显示选定地点的邮政编码,而不是完整地址。在您的示例中,您可以按如下方式更改
place\u changed
侦听器:

    autocomplete.addListener('place_changed', function() {
      var place = autocomplete.getPlace();

      $('#lat').val(place.geometry['location'].lat());
      $('#long').val(place.geometry['location'].lng());

      let postcode;
      for (let i = 0; i < place.address_components.length; i++) {
        let types = place.address_components[i].types;
        for (let type of types) {
          if (type === "postal_code") {
            postcode = place.address_components[i].long_name;
          }
        }
      }
      if (!postcode) {
        postcode = place.formatted_address;
      }
      $('#autocomplete_search').val(postcode);
    });
autocomplete.addListener('place\u changed',function(){
var place=autocomplete.getPlace();
$('#lat').val(place.geometry['location'].lat());
$('#long').val(place.geometry['location'].lng());
让邮政编码;
for(设i=0;i
正在工作(添加API密钥以运行它)

使用上述代码实现,现在如果您在文本字段中键入“Nevile Road”,并选择第一位预测,即英国索尔福德Nevile Road,Salford,UK
,您将获得其
邮政编码前缀
作为唯一值,即
M7

同样,如果您开始键入完整的邮政编码,例如“M7 3PP”,您将获得英国萨尔福德内维尔路M7 3PP位置建议,选择它将为您提供
M7 3PP

但是,请注意,这并不总是有效的,因为有许多地址没有一个单一的、特定的邮政编码。例如,“英国伦敦”根本不会返回任何邮政编码(因为它显然不能)

希望这有帮助

    autocomplete.addListener('place_changed', function() {
      var place = autocomplete.getPlace();

      $('#lat').val(place.geometry['location'].lat());
      $('#long').val(place.geometry['location'].lng());

      let postcode;
      for (let i = 0; i < place.address_components.length; i++) {
        let types = place.address_components[i].types;
        for (let type of types) {
          if (type === "postal_code") {
            postcode = place.address_components[i].long_name;
          }
        }
      }
      if (!postcode) {
        postcode = place.formatted_address;
      }
      $('#autocomplete_search').val(postcode);
    });