OpenLayers z nakładką StreetView

9

Próbuję dodać funkcjonalność StreetView do mojej aplikacji internetowej OpenLayers i chciałbym dodać nakładkę pokazującą dostępność StreetView do samej mapy. Widziałem przykładem nim robione z powodzeniem tutaj , ale nie mogę uzyskać kod do pracy w moim własnym rozwiązaniem. Konkretnie :

var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});

layer.mapObject.addOverlay(new GStreetviewOverlay());

powoduje błąd:

layer.mapObject is null

Czy ktoś ma pojęcie, co robię źle, a jeśli tak, to jak mogę to naprawić?

CatchingMonkey
źródło

Odpowiedzi:

4

Openlayers z Streetview

wymaga rozszerzenia GeoExt ux

cały kod jest dostępny - dzięki czemu możesz zobaczyć, czego brakuje

(jeśli możesz opublikować link do bieżącej mapy - użytkownicy mogą go dla ciebie debugować).

wprowadź opis zdjęcia tutaj

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

Mapperz
źródło
2
+1 - to demo działa. Jest to również ten sam autor, ale nowszy.
geographika
Czy znasz inny sposób korzystania z warstwy nakładki StreetView w OpenLayers bez korzystania z GeoExt?
CatchingMonkey
Tylko dla Google Maps v2 (przestarzałe) fuzzytolerance.info/code/… Wymagany klucz API.
Mapperz
GeoAdmin nie wydaje się już oferować Street View, zamknięcie odpowiedniego przykładu, jaki mogłem znaleźć to: gxp.opengeo.org/master/examples/google-streetview-panel.html (OpenLayers + GeoExt)
kryger
2

Aby korzystać z warstw Google i spełniać wymagania licencyjne, musisz uzyskać dostęp do warstw Google za pośrednictwem interfejsu API Google. Po dodaniu warstwy Google do mapy OpenLayers OpenLayers ładuje interfejs API Google.

layer.mapObject( W przeciwieństwie do layer.mapobiektu mapy OL) powinien zawierać odniesienie do mapy Google. Ponieważ nullcoś poszło nie tak podczas ładowania interfejsu API Google. Możesz sprawdzić w FireBug, czy został poprawnie załadowany.

Przykład, na który wskazujesz, może używać starszego interfejsu API Google 2 zamiast wersji 3. Nie potrzebujesz już klucza API i możesz dodać interfejs API Google, używając:

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

Sprawdź testy jednostkowe warstw interfejsu API Google v3, które mogą Ci pomóc.

Pamiętaj, że StreetView potrzebuje także Flasha w przeglądarce.

geografia
źródło
Cześć, dzięki za pomoc. Nie jestem teraz przy biurku, więc nie będę w stanie przetestować twoich sugestii, ale oto co wiem: zdecydowanie ładuję API Map Google v3. Wcześniej wdrożyłem StreetView w aplikacjach internetowych, ale tym razem szukam również nakładki na mapę. Zastanawiam się jednak, czy jest to przeglądarka. Witryna, którą podałem link do działa poprawnie w IE (8), ale nie w Firefox ... jakieś pomysły?
CatchingMonkey
Demo nie działa dla mnie w FF6, IE8 ani IE9. Wygląda na to, że pokazuje tylko mapę lub widok ulicy.
geographika
Hmmm, strona wydaje się działać w moim IE8 tutaj ... i teraz zajrzę do listy użytkowników OpenLayers!
CatchingMonkey
1

Powodem, dla którego warstwa.mapObject jest pusta, jest to, że właściwość mapObject jest tworzona po dodaniu warstwy do mapy. Spróbuj tego:

var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});
map.addLayer(layer);
layer.mapObject.addOverlay(new GStreetviewOverlay());
D_Guidi
źródło