gpt4 book ai didi

typescript - 如何在我的 vuejs 应用程序中使用从外部 cdn 加载的 bing map ?

转载 作者:搜寻专家 更新时间:2023-10-30 21:34:53 25 4
gpt4 key购买 nike

如何在 vue js 应用程序中使用 bing maps api 来显示 map ?

注意:我使用 Bing map V8 和 vuejs 2.5.17。

这是我的模板

<template>
<div id="map"></div>
</template>

这是我的风格

<style lang="scss" scoped>
#map {
height: 300px;
width: 500px;
}
</style>

这是我的脚本部分(我使用基于类的对象组件)

mounted() {
let mapElement: HTMLElement = <HTMLElement>document.getElementById("map")
var map = new Microsoft.Maps.Map(mapElement, {
credentials: [API_KEY]
});
}

这就是我在我的应用程序中包含来自 cdn 的外部脚本的方式。经过一些研究,我发现并尝试了以下 2 个选项

选项 1:我已将脚本直接包含在我的 index.html 文件中:

<!-- index.html -->
...
<head>
...
<script src="https://www.bing.com/api/maps/mapcontrol?key=[API_KEY]" async defer></script>
</head>

选项 2:我在安装方法中以编程方式从我的组件注入(inject)文档中的脚本,如下所示

mounted() { 
// Add programmaticaly the external Bing maps api script
var scriptTag = document.createElement("script");
scriptTag.src = "https://www.bing.com/api/maps/mapcontrol";
scriptTag.id = "bingApiMaps";
// Inject the dynamic script in the DOM
document.head.appendChild(scriptTag);
...
}

在两者中,我都有跟随错误,我不明白为什么:

[Vue warn]: Error in mounted hook: "ReferenceError: Microsoft is not defined"

最佳答案

我已经转录了 rdhainaut 对 JavaScript 的回答:

mounted: function() {
if (document.getElementById("scriptBingMaps")) {
return; // already loaded
}

// Add a global function for the callback from Bing Maps api
window.OnLoadBingMapsApi = () => this.InitMap();

// Add programmaticaly the external Bing maps api script
var scriptTag = document.createElement("script");
scriptTag.src = "https://www.bing.com/api/maps/mapcontrol?callback=OnLoadBingMapsApi&key=[BING_API_KEY]";
scriptTag.id = "scriptBingMaps";

// Inject the dynamic script in the DOM
document.head.appendChild(scriptTag);
},
methods: {
InitMap: function() {
var mapElement = this.$refs.myMap;

this.map = new Microsoft.Maps.Map(mapElement, {
mapTypeId: Microsoft.Maps.MapTypeId.aerial,
zoom: 15,
maxZoom: 21,
//minZoom: 15,
center: new Microsoft.Maps.Location(52.7759872, -1.5119702),
maxNetworkLinkDepth: 3
});
}
}

关于typescript - 如何在我的 vuejs 应用程序中使用从外部 cdn 加载的 bing map ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53153725/

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