Google maps 谷歌地图API获取国家代码

Google maps 谷歌地图API获取国家代码,google-maps,google-maps-api-3,google-maps-api-2,Google Maps,Google Maps Api 3,Google Maps Api 2,我正在使用Google Autocomplete,希望从网站上输入的位置提取国家代码(GB、IE、FR等) AutocompleteDirectionsHandler.prototype.setupPlaceChangedListener = function(autocomplete, mode) { var me = this; autocomplete.bindTo('bounds', this.map); autocomplete.addListener('p

我正在使用Google Autocomplete,希望从网站上输入的位置提取国家代码(GB、IE、FR等)

  AutocompleteDirectionsHandler.prototype.setupPlaceChangedListener = function(autocomplete, mode) {
    var me = this;
    autocomplete.bindTo('bounds', this.map);
    autocomplete.addListener('place_changed', function() {
      var place = autocomplete.getPlace();
    if (mode === 'ORIG') {
      me.originPlaceId = place.place_id;
      document.getElementById("orig_latitude").value= place.geometry.location.lat();
      document.getElementById("orig_longitude").value= place.geometry.location.lng();
      document.getElementById("country_from").value = place.address_components[1].short_name;
    } else {
      me.destinationPlaceId = place.place_id;
      document.getElementById("dest_latitude").value= place.geometry.location.lat();
      document.getElementById("dest_longitude").value= place.geometry.location.lng();
      document.getElementById("country_to").value = place.address_components[2].short_name;
    }
    me.route();

    });

  };
不幸的是这里

place.address\u components[1]。缩写\u name

正在返回此城市/城镇所在的本地区

我怎样才能得到国家代码

感谢大家对此事的意见,非常感谢;-)

有关更多详细信息,请参见谷歌

演示

JS代码:

var input = document.getElementById('searchTextField');
var options = {
  types: ['geocode']
};

var autocomplete = new google.maps.places.Autocomplete(input, options);

google.maps.event.addListener(autocomplete, 'place_changed', function() {
  var place = autocomplete.getPlace();
  for (var i = 0; i < place.address_components.length; i += 1) {
    var addressObj = place.address_components[i];
    for (var j = 0; j < addressObj.types.length; j += 1) {
      if (addressObj.types[j] === 'country') { /*outputs result if it is country*/
        document.getElementById('country_shortName').innerHTML = addressObj.short_name
      }
    }
  }

});
var input=document.getElementById('searchTextField');
变量选项={
类型:['geocode']
};
var autocomplete=new google.maps.places.autocomplete(输入,选项);
google.maps.event.addListener(自动完成,'place\u changed',函数(){
var place=autocomplete.getPlace();
对于(变量i=0;i
Html

请插入地址:

国家/地区短代码:


谢谢Deep 3015。我使用了你的解决方案,它确实有效!太棒了

注意:对于可能遇到相同问题的其他用户:

I had to replace .innerHTML with .value to make it work

除此之外,现在100%工作。再次感谢您的帮助[竖起大拇指]

感谢您的深沉3015。也许你能解释一下?我在初始脚本中尝试了一些其他方法,但在使用document.getElementById(“country\u from”).value=place.address\u components[2]时,没有得到相同的结果;或document.getElementById(“country\u from”).value=place.address\u components[3]。缩写\u name;方括号中的数字似乎返回不同的值,例如伦敦:[1]大伦敦[2]英格兰[3]GB,这是完美的。但是如果我把这个应用到一个爱尔兰城镇,同样的等级[3]将一无所获。你知道为什么吗?谢谢。
autocomplete
结果随您的键入而变化。如果要查看不同输入的输出。您可以执行
console.log(JSON.stringify(autocomplete.getPlace())
。在此日志中,您可以看到国家/地区事件的变量结果(JSON字符串中的位置)。因此,要获得准确的国家相关数据,我们无法预测发生的顺序。在我的代码中,我使用了
if(addressObj.types[j]==“country”)
这确保了结果是针对国家类型的。希望这能给出足够的解释。我的示例显示为span元素的
innerHTML
。很好,你明白了;-)
I had to replace .innerHTML with .value to make it work