2017-08-24 2 views
0

Ich versuche, die Bing Maps-API während der Laufzeit meiner JavaScript-Datei zu laden. Hier ist, was ich bisher habe, basierend auf this.BingMaps-API zur Laufzeit laden

var bingmap_link = 'https://www.bing.com/api/maps/mapcontrol?callback=loadMapScenario'; 
$.when(
    $.getScript(bingmap_link), 
    $.Deferred(function(deferred){ 
    $(deferred.resolve); 
    }) 
) 
.done(function() { 
    console.log("done"); 
    load_bing_map(); 
}); 

Aber ich den folgenden Fehler

TypeError: Microsoft.Maps.NetworkCallbacks.f_logCallbackRequest is not a function

bekommen Also habe ich versucht, einen neuen Versuch:

$('head').append('<script type="text/javascript" src="https://www.bing.com/api/maps/mapcontrol?callback=loadMapScenario" async defer></script>'); 

load_bing_map(); 

Aber ich laufe wieder in Fehler:

jQuery.Deferred exception: n is null [email protected]https://www.bing.com/api/maps/mapcontrol?callback=loadMapScenario:12:7416

In in beiden Fällen die load_bing_map() Funktion sieht so aus.

function load_bing_map() { 
    var map = new Microsoft.Maps.Map('#mymap', { 
    credentials: 'MyKey' 
    }); 
} 

Der Code wird ausgeführt, nachdem der $().ready Trigger ausgelöst wurde.

Was fehlt mir?

Schließlich brauche ich nicht eine Lösung wie

<head> 
    <script type='text/javascript' src='https://www.bing.com/api/maps/mapcontrol?callback=loadMapScenario' async defer></script> 
</heady> 

ich nur kann es Laufzeit tun Wuring.

Vielen Dank.

Antwort

1

Sie eine Callback-Funktion in der Karte Skript URL angeben, aber nicht über eine Funktion mit diesem Namen in Ihrem Code. Das verursacht den Fehler, den Sie sehen. Außerdem funktioniert der Code, den Sie haben, nicht so wie er ist. Das Map-Steuerelement lädt mehrere Ressourcen asynchron. Als solches wird dann die Done-Funktion in Ihrer Datei erreicht, es wurde nur die ursprüngliche JavaScript-Datei geladen, keine der anderen Ressourcen, sodass die Karten-API noch nicht verfügbar ist. Hier ist ein Codebeispiel, das zu faul Last zeigt, wie die Karte API: https://github.com/Microsoft/BingMapsV8CodeSamples/blob/master/Samples/Map/Lazy%20Loading%20the%20Map.html

Sie versuchen, es kann hier aus: http://bingmapsv8samples.azurewebsites.net/#Lazy%20Loading%20the%20Map

+0

funktioniert perfekt. Vielen Dank :) – Torben

Verwandte Themen