有没有办法在google API URL之外调用google initMap回调函数?

时间:2016-10-21 13:12:00

标签: javascript api google-maps

我正在使用包含initMap回调函数的谷歌地图API,我需要在谷歌地图API网址之外调用此功能,例如我正在使用:

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places&callback=initMap"></script>

我需要删除查询字符串&callback=initMap的最后一部分,但是当我删除谷歌地图时不起作用。

问题是我想对所有谷歌api相关的东西使用这个相同的谷歌地图API,因此一些API没有initMap方法,这就是为什么我想分开调用这种方法是可能的。

2 个答案:

答案 0 :(得分:3)

您不必异步调用initMap函数。

更改(看起来缺少“异步延迟”):

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places&callback=initMap"></script>

致:

<script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"></script>

然后在DOM中渲染map div后调用initMap函数。

注意:有一个原因是Google已将所有示例更改为异步加载API(页面加载速度),所有示例最初都是使用onload函数完成的。

代码段

function initialize() {
  var map = new google.maps.Map(
    document.getElementById("map_canvas"), {
      center: new google.maps.LatLng(37.4419, -122.1419),
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });

}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map_canvas {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js?libraries=places"></script>
<div id="map_canvas"></div>

答案 1 :(得分:0)

您可以在延迟initMap

后致电setTimeout(initMap, 500);