google maps api autocomplete在localhost下工作,但在服务器上不起作用

时间:2016-07-06 09:58:36

标签: google-maps

我使用谷歌地图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();

1 个答案:

答案 0 :(得分:4)

有3个问题

  1. 您正在调用initialize而不知道是否已加载maps-API,删除初始化调用并使用maps-API的callback - 参数

  2. maps-API现在需要密钥 因为看起来有些情况(没有文档)它可以在没有密钥的情况下工作(我猜想来自localhost和来自已经在需要密钥之前使用了maps-API的域的请求),可能你的域名没有符合此条件,因此您应该/必须use a key

  3. (另外)我会称之为谷歌的一个错误: 看起来,现在使用Places-library需要为项目激活 Places API Web服务(在它足以仅激活 Maps JavaScript API 之前)强>)