Zum hinzufügen der Bing Maps-v8 an Angular 2.0?
Möchte ich hinzufügen, dass die Bing Map-V8-Kontrolle zu meinem Anguar 2.0-Projekt. Ich will wissen, was ich tun müssen, um fügen Sie die Bing Map-V8 in Angular 2.0-Projekt. Ich habe anbei meine Umsetzung. Die Komponente, die ich erstellt konnte nicht geladen werden. Wie kann ich die Referenz von Microsoft.Maps.Karte?
Hier ist ein Beispiel für die bing-Karte v8. Alles funktioniert gut, wenn das speichern im folgenden Beispiel wird als HTML. Die bing map-Schlüssel erstellt wurde.
HTML:
<!DOCTYPE html>
<html>
<head>
<title>addOneLayerItemHTML</title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
</head>
<body>
<div id='printoutPanel'></div>
<div id='myMap' style='width: 100vw; height: 100vh;'></div>
<script type='text/javascript'>
function loadMapScenario() {
var map = new Microsoft.Maps.Map(document.getElementById('myMap'), {
credentials: 'My Bing Map Key - I removed here'
});
var pushpin = new Microsoft.Maps.Pushpin(map.getCenter(), null);
var layer = new Microsoft.Maps.Layer();
layer.add(pushpin);
map.layers.insert(layer);
}
</script>
<script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?branch=experimental&callback=loadMapScenario' async defer></script>
</body>
</html>
Ihr ist die Datei, die ich erstellt map.component.html.
HTML:
<div class='panel panel-primary'>
<div class='panel-heading'>
{{pageTitle}}
</div>
<div id='myMap' style='width: 100vw; height: 100vh;'></div>
</div>
Hier ist die Datei, die ich erstellt als Karte.Komponente.ts.
JS:
import { Component, OnInit } from 'angular2/core';
@Component({
selector: 'pm-map',
templateUrl: 'app/bingmap/map.component.html'
})
export class MapComponent implements OnInit {
public pageTitle: string = "Map";
var map = new Microsoft.Maps.Map(document.getElementById('myMap'), {
credentials: 'Bing Map Key - I removed it here'
});
var pushpin = new Microsoft.Maps.Pushpin(map.getCenter(), null);
var layer = new Microsoft.Maps.Layer();
layer.add(pushpin);
map.layers.insert(layer);
}
- Was ist Eckig 2 hindert Sie, einschließlich einer Bing-Karte?
- Wie in aller Welt hast du den Eindruck? Ich bin zu Fragen, warum können Sie nicht einfach eine Bing-Karte mit Winkel-2. Was ist es über Winkel-2 ist, derzeit ist es schwierig für Sie, um eine Bing-Karte auf Ihrer Website?
- Dies ist mehr AnguarJS 2 Frage. Wie kann ich wickeln Sie die Bing Map als AngularJS 2 Komponente? Wo kann ich die Funktion loadMapScenario und finden Sie die Referenz für Microsoft.Maps.Karte?
- Ich habe bearbeitet die Frage, um die Frage deutlicher. Die Komponente konnte nicht geladen werden auf der Seite.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dein code ist fast in Ordnung, Sie müssen nur wenige änderungen
1 - in
index.html
entfernen der callback-Funktion und diediv
Auch in
index.html
entfernen Sie diecallback
parameter aus dem Skript importieren.<script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?branch=experimental&callback=loadMapScenario' async defer></script>
Werden:
<script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?branch=experimental' async defer></script>
Nun, Sie haben das Skript geladen, alle Sie tun müssen ist, erstellen Sie die map in der Komponente
überprüfen Sie in diesem plunk
import {ViewChild} from '@angular/core'
error TS2663: Cannot find name 'Microsoft'.
typings install dt~bingmaps/microsoft.maps --global --save
error TS2339: Property 'Layer' does not exist on type 'typeof Maps'.
underror TS2339: Property 'layers' does not exist on type 'Map'.
script type='text/javascript' src='http://www.bing.com/api/maps/mapcontrol?branch=experimental' async defer></script>
hast du ?Ursprünglich habe ich versucht die akzeptierte Antwort und lief in das Problem einige Leute hatten in den Kommentaren, wo Sie beim laden der 'Prototyp' war null.
Ursprünglich habe ich dies Problem gelöst durch die Verwendung eines try/catch-mit einem setTimeout in die zu fangen, die versuchen würde, laden Sie bing nach einem zweiten. Das ging, aber war eine sehr schlampige Lösung.
Schließlich sah ich, wie Menschen geladen Google Maps in eckigen, um zu sehen, ob es eine bessere Lösung. Zum Glück gibt es und verwendet es verspricht.
Die Lösung, die für mich gearbeitet wurde finden Sie hier in diese Antwort. Volle Punktzahl für diese geht zu Ihnen.
Erstellen Sie erst einen Dienst zum laden der Karte...
map-loader-service.service
In der übergeordneten Komponente auf die Komponente, enthält die bing-map-element haben diesen code...
Darüber hinaus in der Vorlage der übergeordneten Komponente haben, dieser code verhindert, dass die bing-maps-Komponente wird initialisiert, bis es fertig ist.
Nun, in der bing-Karte.Komponente selbst wollen wir warten, bis die Komponente in der DOM vor dem laden der map.
Und schließlich laden Sie die bing-Karte in den bing-Karte.Komponente
Es ist eine Gemeinschaft, Bemühungen um den Aufbau Angular2 Richtlinien für Bing Maps. Noch in der alpha version, aber eine basic-demo finden Sie hier: http://ng2-bingmaps.azurewebsites.net/
Dem Github-repo ist hier: https://github.com/youjustgo/ng2-bingmaps