Я использую BingMaps Api. Я использую JavaScript для добавления тега script в DOM, который загружает CDN. Затем я объявляю глобальную функцию для использования в качестве обратного вызова при загрузке CDN, как сказано в документации.
Тем не менее, когда выполняется обратный вызов, я получаю сообщение «TypeError: Microsoft.Map не является конструктором».
Когда я набираю «Microsoft» в консоли, я вижу, что она есть. Эта проблема не возникает, когда я помещаю скрипт прямо в HTML. Почему это?
Код можно просмотреть и выполнить в этой песочнице: https://codesandbox.io/s/1z4o7km3ml
// insert script tag into DOM
const bingScript = document.createElement("script");
bingScript.type = "text/javascript";
bingScript.src =
"https://www.bing.com/api/maps/mapcontrol?callback=onLoadApi";
document.head.appendChild(bingScript);
//insert div element into DOM
const mapDiv = document.createElement("div");
mapDiv.id = "bingMap";
mapDiv.setAttribute("style",
"position:relative;width:600px;height:400px;");
document.body.appendChild(mapDiv);
window.onLoadApi = () => {
try {
const map = new
window.Microsoft.Map(document.getElementById("bingMap"), {
credentials:
<API KEY>
});
} catch (e) {
console.error(e);
}
};