Ich versuche, meiner OpenLayers-Webanwendung StreetView-Funktionen hinzuzufügen, und möchte der Karte selbst das Overlay hinzufügen, das die StreetView-Verfügbarkeit anzeigt. Ich habe hier ein Beispiel dafür gesehen, wie es erfolgreich durchgeführt wurde , aber ich kann den Code nicht in meiner eigenen Lösung zum Laufen bringen. Insbesondere:
var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});
layer.mapObject.addOverlay(new GStreetviewOverlay());
führt zu dem Fehler:
layer.mapObject is null
Hat jemand eine Idee, was ich falsch machen könnte, und wenn ja, wie kann ich das beheben?
quelle
Um Google-Ebenen zu verwenden und die Lizenzanforderungen zu erfüllen, müssen Sie über die Google-API auf Google-Ebenen zugreifen. Wenn Sie einer OpenLayers-Karte eine Google-Ebene hinzufügen, lädt OpenLayers die Google-API.
Das
layer.mapObject
(im Gegensatz zulayer.map
dem OL-Kartenobjekt) sollte Ihnen einen Verweis auf die Google-Karte geben. Da diesnull
etwas schief gelaufen ist , wurde die Google-API geladen. Sie können in FireBug überprüfen, ob es korrekt geladen wurde.Das Beispiel, auf das Sie verweisen, verwendet möglicherweise die ältere Google 2-API anstelle von Version 3. Sie benötigen keinen API-Schlüssel mehr und können die Google-API mithilfe folgender Elemente hinzufügen:
Schauen Sie sich die Komponententests für die Google v3-API-Ebenen an, die Ihnen möglicherweise helfen.
Denken Sie daran, dass StreetView auch Flash im Browser benötigt.
quelle
Der Grund, warum layer.mapObject null ist, besteht darin, dass die mapObject-Eigenschaft erstellt wird, nachdem der Layer der Map hinzugefügt wurde. Versuche dies:
quelle