成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

angular.js - 用angularjs的service封裝百度地圖api出錯(cuò),請(qǐng)問(wèn)原因?

瀏覽:182日期:2022-10-09 14:10:54

問(wèn)題描述

我想用如下方式引入百度地圖服務(wù),請(qǐng)問(wèn)為什么出錯(cuò)?

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; } };}]);

使用地圖服務(wù)(app依賴(lài)項(xiàng)已包含bmap,以下代碼為使用服務(wù)的controller)

app.controller(’backup’,function($rootScope,bmapService){ $rootScope.gotoBackup(); map = new bmapService.bmap().BMap.Map(’map’);})

百度給出的使用示例:

<!DOCTYPE html> <html> <head> <meta http-equiv='Content-Type' content='text/html; charset=utf-8' /> <meta name='viewport' content='initial-scale=1.0, user-scalable=no' /> <style type='text/css'> body, html,#l-map {width: 100%;height: 100%;overflow: hidden;margin:0;} </style> <script type='text/javascript' src='http://api.map.baidu.com/api?type=quick&ak=您的密鑰&v=1.0'></script> <title>顯示地圖</title> </head> <body> <p id='l-map'></p> </body></html> <script type='text/javascript'> var map = new BMap.Map('l-map'); map.centerAndZoom(new BMap.Point(116.404, 39.915), 14); </script>

問(wèn)題解答

回答1:

你的bmapService.bmap()返回的是一個(gè)promise對(duì)象,你要對(duì)promise對(duì)象使用then(function(){}),在回調(diào)方法中才能使用加載完成的地圖API

標(biāo)簽: 百度 地圖