我使用谷歌地图api自动完成地点。
Everythings在localhost中工作,但是当我在服务器上发布并上传它时,它不起作用......为什么会发生?地方的下拉列表没有显示。
这是我的HTML:
<input type="text" id="autocomplete">
这是我的JS:
<script src="https://maps.googleapis.com/maps/api/js?sensor=false&libraries=places"></script>
<script>
var autocomplete;
function initialize() {
autocomplete = new google.maps.places.Autocomplete(
(document.getElementById('autocomplete')), {
types: ['(cities)'],
componentRestrictions: { country: "ph" }
});
google.maps.event.addListener(autocomplete, 'place_changed', function () {
fillInAddress();
});
}
placeParser = function(place){
result = {};
for(var i = 0; i < place.address_components.length; i++){
ac = place.address_components[i];
result[ac.types[0]] = ac.long_name;
}
return result;
};
function fillInAddress() {
var place = autocomplete.getPlace();
document.getElementById("latitude").value = place.geometry.location.lat();
document.getElementById("longitude").value = place.geometry.location.lng();
components = placeParser(place);
}
initialize();
答案 0 :(得分:4)
有3个问题
您正在调用initialize
而不知道是否已加载maps-API,删除初始化调用并使用maps-API的callback
- 参数
maps-API现在需要密钥 因为看起来有些情况(没有文档)它可以在没有密钥的情况下工作(我猜想来自localhost和来自已经在需要密钥之前使用了maps-API的域的请求),可能你的域名没有符合此条件,因此您应该/必须use a key
(另外)我会称之为谷歌的一个错误: 看起来,现在使用Places-library需要为项目激活 Places API Web服务(在它足以仅激活 Maps JavaScript API 之前)强>)