gpt4 book ai didi

javascript - bing map v7 到 v8 迁移 - 脚本导入问题

转载 作者:行者123 更新时间:2023-12-03 03:55:41 25 4
gpt4 key购买 nike

好吧,我已经四处寻找解决方案,我确信有人会说这是一个重复的主题,但我很困惑为什么这不起作用。

这是我现在拥有的代码的基本示例

ma​​in.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<script type="text/javascript" src="main.js"></script>
</head>

<body>
<div id="myMap" style="position:relative;width:600px;height:400px;"></div>
</body>
<script>
var url =
//'http://www.bing.com/api/maps/mapcontrol?branch=experimental&callback=GetMap';
'https://www.bing.com/mapspreview/sdk/mapcontrol';
loadScript(url, test_function);
function test_function() {
console.log('inside test_function before map');
map = new Microsoft.Maps.Map('#myMap', {
credentials: 'My Bing Maps Key'});
console.log('inside test_function after map');
};
</script>

</html>

ma​​in.js

function loadScript(url, callback){

var script = document.createElement("script")
script.type = "text/javascript";
script.async = true;
script.defer = true;

if (script.readyState){ //IE
console.log('inside IE block');
script.onreadystatechange = function(){
if (script.readyState == "loaded" ||
script.readyState == "complete"){
script.onreadystatechange = null;
callback();
}
};
} else { //Others
console.log('inside Other block');
script.onload = function(){
callback();
};
}

script.src = url;
document.getElementsByTagName("head")[0].appendChild(script);
}

控制台输出

main.js:18 inside Other block
main.html:17 inside test_function before map
mapcontrol:11 Uncaught TypeError: Cannot read property 'prototype' of null
at k (mapcontrol:11)
at n.h [as create] (mapcontrol:11)
at e (mapcontrol:11)
at t.l [as instance] (mapcontrol:11)
at n.h [as create] (mapcontrol:11)
at e (mapcontrol:11)
at t.l [as instance] (mapcontrol:11)
at new Microsoft.Maps.Map (mapcontrol:13)
at test_function (main.html:18)
at HTMLScriptElement.script.onload (main.js:20)

我可以得到一个基本的示例,但是当我尝试使用这种创建脚本元素并附加它的方法时,我什么也得不到。由于这是在来自 v7 的较大应用程序中实现的方式,因此我不会尝试重新构建它。

我尝试过类似 jQuery getScript 之类的东西。

请告诉我你的想法!谢谢。

最佳答案

我想说的第一件事是,您可能应该从公开发布的问题中删除您的凭据。只是一个想法。

其次,该错误是由于在加载 map 之前尝试与 map 交互造成的。

我个人以前从未见过以这种方式加载的脚本,但我猜它是有效的 - 至少在某些情况下是这样,但可能不是这个。我认为您这样做是有原因的。

无论如何,由于我对此缺乏了解,我只能假设正在发生的事情是正在加载脚本并且正在调用您的回调(test_function),正如代码似乎暗示的那样。

但是,我怀疑,在这种情况下,正在加载的脚本和正在加载的Bing map 是两个不同的东西。

您最初使用 &callback=GetMap 注释掉的 url 是异步加载 Bing map 的记录方式。完成加载后,Bing map 将调用您的 GetMap 函数。使用此特定代码,callback=test_function 将是您想要的。

因此 test_function 应由 Bing map 本身启动,而不是通过脚本加载函数传递(再次对其工作原理进行假设)。我猜想,加载函数除了将该脚本放置到位之外实际上不想做任何事情,因此没有回调方法; Bing map 将为您处理这个问题。

这是一个Plunker为你服务。

关于javascript - bing map v7 到 v8 迁移 - 脚本导入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44962865/

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