我想用如下方式引入百度地图服务,请问为什么出错?
angular.module('bmap',[])
.factory('bmapService', ['$document', '$q', '$rootScope',
function($document, $q, $rootScope) {
var map = $q.defer();
function onScriptLoad() {
// Load client in the browser
$rootScope.$apply(function() { map.resolve(window.bmap); });
}
// Create a script tag with d3 as the source
// and call our onScriptLoad callback when it
// has been loaded
var scriptTag = $document[0].createElement('script');
scriptTag.type = 'text/javascript';
scriptTag.async = true;
scriptTag.src = 'http://api.map.baidu.com/api?type=quick&ak=XXXX&v=1.0';
scriptTag.onreadystatechange = function () {
if (this.readyState == 'complete') onScriptLoad();
};
scriptTag.onload = onScriptLoad;
var s = $document[0].getElementsByTagName('body')[0];
s.appendChild(scriptTag);
return {
bmap: function() { return map.promise; }
};
}]);
使用地图服务(app依赖项已包含bmap,以下代码为使用服务的controller)
app.controller('backup',function($rootScope,bmapService){
$rootScope.gotoBackup();
map = new bmapService.bmap()
.BMap.Map('map');
})
百度给出的使用示例:
显示地图
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
你的bmapService.bmap()返回的是一个promise对象,你要对promise对象使用then(function(){}),在回调方法中才能使用加载完成的地图API