OpenLayers mit StreetView-Overlay

9

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?

CatchingMonkey
quelle

Antworten:

4

Openlayers mit Streetview

erfordert die GeoExt ux-Erweiterung

Der gesamte Code ist verfügbar, sodass Sie sehen können, was Ihnen fehlt

(Wenn Sie einen Live-Link zu Ihrer aktuellen Karte veröffentlichen könnten, könnten Benutzer ihn für Sie debuggen.)

Geben Sie hier die Bildbeschreibung ein

http://api.geo.admin.ch/main/wsgi/doc/build/api/streetview.html

Mapperz
quelle
2
+1 - diese Demo funktioniert. Es ist ebenfalls vom selben Autor, aber neuer.
Geographika
Kennen Sie eine andere Möglichkeit, die StreetView-Überlagerungsebene in OpenLayers ohne GeoExt zu verwenden?
CatchingMonkey
Nur für Google Maps v2 (veraltet) fuzzytolerance.info/code/… API-Schlüssel erforderlich.
Mapperz
GeoAdmin scheint Street View nicht mehr anzubieten. Das schließende relevante Beispiel, das ich finden konnte, war: gxp.opengeo.org/master/examples/google-streetview-panel.html (OpenLayers + GeoExt)
kryger
2

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 zu layer.mapdem OL-Kartenobjekt) sollte Ihnen einen Verweis auf die Google-Karte geben. Da dies nulletwas 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:

<script src="http://maps.google.com/maps/api/js?sensor=false"></script>

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.

geographika
quelle
Hallo, danke für deine Hilfe. Ich bin gerade nicht an meinem Schreibtisch, daher kann ich Ihre Vorschläge nicht testen, aber ich weiß Folgendes: Ich lade definitiv die Google Maps API v3. Ich habe StreetView bereits in Web Apps implementiert, aber dieses Mal möchte ich das Overlay auch auf der Karte anzeigen. Ich frage mich allerdings, ob es eine Browsersache ist. Die Website, für die ich einen Link angegeben habe, funktioniert einwandfrei in IE (8), aber nicht in Firefox ... irgendwelche Ideen?
CatchingMonkey
Die Demo funktioniert bei FF6, IE8 oder IE9 nicht. Es scheint nur entweder eine Karte oder eine Straßenansicht zu zeigen ..
Geographika
Hmmm, die Website scheint in meinem IE8 hier zu funktionieren. Ich werde jetzt auch die OpenLayers-Benutzerliste konsultieren!
CatchingMonkey
1

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:

var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});
map.addLayer(layer);
layer.mapObject.addOverlay(new GStreetviewOverlay());
D_Guidi
quelle