在打开数据后启用Google地图

时间:2015-09-15 16:04:40

标签: javascript angularjs cordova google-maps google-maps-api-3

我有一个带有角度引导的Cordova应用程序在'deviceready'上踢。

我的谷歌地图链接如下:

<script src="https://maps.googleapis.com/maps/api/js"></script>

如果应用程序以数据设置为关闭开始,则显然脚本将丢失。

如果用户打开数据,我该如何初始化Google地图?我必须重启应用程序吗?我试过通过'document'注入脚本,但是错误消息说不允许这样做。

非常欢迎任何帮助或提示。

干杯

戴尔

1 个答案:

答案 0 :(得分:0)

基本上,此代码将检查在角度控制器中构建地图时是否加载了谷歌地图api库,如果没有,请尝试获取。

//already loaded build the map
if ($window.google && $window.google.maps) {
    prepareMap();
} else {    //not loaded
    //create a promise object
    var mapScriptPromise = getMapScript();
    mapScriptPromise.then(function(){
        prepareMap();   //now you can build the map
    });      
}

//create the hook for the file and return the deferred promise
function getMapScript() {
    var deferred = $q.defer();
    var script = document.createElement('script');
    //script callback
    $window.initMap = function() {
       deferred.resolve();
    }
    script.src = "https://maps.googleapis.com/maps/api/js?sensor=true&callback=initMap";
    document.body.appendChild(script);

    return deferred.promise;    
}

//add your map settings here i.e.
function prepareMap() {
    var map = new google.maps.Map(mapCanvas, mapOptions);
    ...
}