SDK для Bing Maps - PullRequest
       47

SDK для Bing Maps

0 голосов
/ 07 ноября 2019

В настоящее время я создаю SDK для использования Bing Maps. Когда я запускаю SDK, карта bing не отображается.

Файл "component.js" содержит следующее:

define(["sap/designstudio/sdk/component","d3"], function(Component,d3, unusedDummy) {
Component.subclass("com.xxx.bingmaps.BingMaps", function() {

 this.init = function() {

    var url = 'http://www.bing.com/api/maps/mapcontrol?callback=GetMap&key=[MY_BING_KEY]'; 

        const script = document.createElement("script");
        script.type = 'text/javascript';
        script.src = url; 
        script.async = true;
        script.defer = true;
        document.head.appendChild(script);

        function GetMap() {
            this.map = new Microsoft.Maps.Map('#myMap', {
              center: new Microsoft.Maps.Location(52.527222, 13.4225),
              mapTypeId: Microsoft.Maps.MapTypeId.aerial,
              zoom: 10
          });

        };
    };

   });
});

В файле "contrib.xml" этовызывается по следующему коду

<requireJs modes="commons m">res/js/component</requireJs>

У кого-нибудь есть подсказка, где лежит ошибка?

С уважением, Тимо

Вот мой новый код:

define(["d3", "sap/designstudio/sdk/component"], function(d3, Component) {  

function GetMap() {
    var map = new Microsoft.Maps.Map('#BingMaps', {         
    center: new Microsoft.Maps.Location(52.527222, 13.4225),
    mapTypeId: Microsoft.Maps.MapTypeId.aerial,
    zoom: 10
    });
};   

Component.subclass("com.xxx.bingmaps.BingMaps", function() {

    this.init = function() {

        var url = 'https://www.bing.com/api/maps/mapcontrol?callback=GetMap&key=[MY_KEY]'; 

        const script = document.createElement("script");
        script.type = 'text/javascript';
        script.src = url; 
        script.async = true;
        script.defer = true; 
        document.head.appendChild(script);

    };
      GetMap();

});
});

1 Ответ

0 голосов
/ 12 ноября 2019

Функция GetMap находится внутри функции init, а не глобальной функции. Таким образом, когда URL-адрес скрипта карты загружен, он не может найти / получить доступ к функции GetMap. Пара опций:

  • Сделать функцию GetMap глобальной.
  • Синхронно загрузить URL-адрес сценария и вызвать код для загрузки встроенной карты.
...