以异步方式加载Google地方信息

Ala*_*ink 3 jquery google-maps-api-3 google-places-api

由于我将在移动应用中使用谷歌地图和地点,我不希望任何东西减慢应用程序加载速度.

我在边缘网络上看到过,我的应用启动速度很慢.我所有的js都是本地的,所以只有谷歌地图和地方需要很长时间才能加载(如果我从html文件中删除地图和地点,加载速度很快).

index.html
<script>....</script>
<script src='http://maps.google.com/maps/api/js?key=mykey&amp;sensor=false'></script>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?libraries=places&amp;sensor=false"></script>
</body>
Run Code Online (Sandbox Code Playgroud)

我发现使用ajax动态加载谷歌地图v3如何异步下载谷歌地图:

$.getScript("http://maps.google.com/maps/api/js?key=mykey&sensor=false&async=2&callback=MapApiLoaded", function () {});

function MapApiLoaded() {
   $.ajaxSetup({async:false});
   $.getScript("http://maps.googleapis.com/maps/api/js?libraries=places&sensor=false");
   $.ajaxSetup({async:true});
   alert('loading places done');
}
Run Code Online (Sandbox Code Playgroud)

我收到警报,我已经检查过$ .getScript()成功返回但是当我尝试使用地方时,我在javascript控制台中收到以下错误:谷歌地图位置未定义.

我试图只在html文件中放置地点并异步加载谷歌地图,但它也不起作用.

任何的想法 ?先感谢您.

Mic*_*ary 6

您正在加载Maps API两次.只需要做一次,包括地方库:

$.getScript("http://maps.google.com/maps/api/js?key=mykey&libraries=places&sensor=false&callback=MapApiLoaded");

function MapApiLoaded() {
    alert('loading Maps API and Places library done');
}
Run Code Online (Sandbox Code Playgroud)