Google Maps API Fetch国家/地区代码

问题描述:

我正在使用Google自动填充,并希望从网站上输入的位置提取国家代码(GB,IE,FR等)。Google Maps API Fetch国家/地区代码

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_components [1] .short_name;

正在返回该市/镇所在的当地区域。

如何获取国家/地区代码?

谢谢大家对您对此事怎么输入,非常感谢;-)

欲了解更多详情,请参见Place Autocomplete从谷歌

Fiddle演示

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 
     } 
    } 
    } 

}); 

Html

<label for="searchTextField">Please Insert an address:</label> 
<br> 
<input id="searchTextField" type="text" size="50"> 
<p >Country Short Code: <span id="country_shortName"></span></p> 
+0

感谢您的深3015.也许你可以对此有所了解?我从最初的脚本中尝试了更多的东西,但在使用 document.getElementById(“country_from”)时我得不到相同的结果value = place.address_components [2] .short_name; 或 document.getElementById(“country_from”)。value = place.address_components [3] .short_name; 似乎方括号中的数字返回不同的值,例如伦敦:[1]大伦敦[2]英格兰[3]英国,这是完美的。但是如果我将它应用到爱尔兰的一个城镇,同一级别[3]将不会返回任何结果。你知道为什么吗?谢谢 – FusionDesign

+0

“自动完成”结果因键入而异。如果你想看到不同输入的输出。你可以这样做'console.log(JSON.stringify(autocomplete.getPlace()))'。在这个日志中你可以看到国家发生的变量结果(在Json字符串中的位置)。因此,获取确切的国家相关数据的方式我们无法预测发生的顺序。在我的代码中,我使用了'if(addressObj.types [j] ==='country')'这确保结果是针对乡村类型的。希望这给出足够的解释 –

谢谢深度3015.我用你的解决方案,它确实工作!神奇......

注意其他用户谁可能碰到了同样的问题:

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

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

+0

我的例子是显示为'innerHTML'来跨度元素。好,你有它;-) –