gpt4 book ai didi

javascript - AngularJS 无法加载 Bing map

转载 作者:行者123 更新时间:2023-11-30 20:16:18 24 4
gpt4 key购买 nike

我正在使用 AngularJS 显示 Bing map ,但错误显示“类型错误:无法读取 null 的属性‘原型(prototype)’”。请看下面。

在我的 Razor View 文件中有以下内容:

<script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>
<script type="text/javascript" src="~/lib/angular/angular.min.js"></script>
<script src="~/js/Site.js"></script>
----
----
--
<div ng-app="myDisplayItems">
<div ng-controller="myDisplayItemsController">
<div id="myMap"></div>
</div>
</div>

在我的 JavaScript 文件中有:

var displayItems = angular.module("myDisplayItems", []);
displayItems.controller("myDisplayItemsController", function myDisplayItemsController($scope) {
showMap();
});

function showMap() {
var key = "######";

var map = new Microsoft.Maps.Map('#myMap', {
credentials: key,
zoom: 3
});
}

更新:

var displayItems = angular.module("myDisplayItems", []);
displayItems.controller("myDisplayItemsController", function myDisplayItemsController($scope) {
$scope.map = null;
$scope.init = function () {
$scope.map = showMap();
};

angular.element(document).ready(function () {
$scope.init();
});
});

最佳答案

显然发生此错误是因为 Bing map 库在 map 初始化后尚未就绪

没有错误发生,是 showMap 函数在一些延迟后被调用(假设 Bing Maps 库在那一刻已经加载),例如:

$timeout(function() { $scope.initMap()}, 2000); 

但我会提出以下解决方案:

注册 Bing map 库准备就绪后需要触发的函数,如下所示:

Microsoft.Maps.CallbackOnLoad = "initMap";

并声明initMap一个全局函数:

$window.showMap = function () {
//...
}

演示

angular.module('mapApp', []);
angular
.module('mapApp')
.controller('MapController', MapController);

function MapController($scope, $window) {

$window.initMap = function () {
let map = new window.Microsoft.Maps.Map(
document.getElementById('myMap'), {
credentials: 'AjwUEXFZA8SMyy8CaJj59vJKVDoWohNXVFz_uGyHlT8N40Jgr-zrhvcxbTNRyDqn'
});
map.setView({
zoom: 6,
center: new Microsoft.Maps.Location(52.406978607177734, -1.5077600479125977)
});
}

Microsoft.Maps.CallbackOnLoad = "initMap";
}
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.0.3/angular.min.js"></script>
<script type="text/javascript" src="http://ecn.dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=7.0"></script>

<div ng-app="mapApp" ng-controller="MapController">
<div id="myMap" style="width:600px;height:400px;"></div>
</div>

关于javascript - AngularJS 无法加载 Bing map ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51887796/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com