OpenLayers con StreetView Overlay


9

Sto cercando di aggiungere la funzionalità StreetView alla mia app Web OpenLayers e vorrei aggiungere l'overlay che mostra la disponibilità di StreetView sulla mappa stessa. Ho visto un esempio di ciò che è stato fatto con successo qui , ma non riesco a far funzionare il codice nella mia soluzione. In particolare:

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

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

provoca l'errore:

layer.mapObject is null

Qualcuno ha idea di cosa potrei fare di sbagliato e, in tal caso, come posso risolvere questo problema?

Risposte:


4

Openlayers con Streetview

richiede l'estensione ux di GeoExt

tutto il codice è disponibile, così puoi vedere cosa ti stai perdendo

(se potessi pubblicare un link live sulla tua mappa corrente, gli utenti potrebbero eseguirne il debug per te.)

inserisci qui la descrizione dell'immagine

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


2
+1: questa demo funziona. È dello stesso autore, ma più recente.
geographika,

Conosceresti un altro modo di utilizzare lo strato di overlay StreetView in OpenLayers senza utilizzare GeoExt?
CatchingMonkey

È richiesta solo la chiave API di Google Maps v2 (obsoleta) fuzzytolerance.info/code/… .
Mapperz

GeoAdmin non sembra più offrire Street View, l'esempio rilevante più vicino che ho trovato è stato: gxp.opengeo.org/master/examples/google-streetview-panel.html (OpenLayers + GeoExt)
kryger

2

Per utilizzare i livelli di Google e soddisfare i requisiti di licenza devi accedere ai livelli di Google tramite l'API di Google. Quando aggiungi un livello Google a una mappa OpenLayers OpenLayers carica l'API di Google.

Il layer.mapObject(al contrario del layer.mapquale è l'oggetto mappa OL) dovrebbe darti un riferimento a Google Map. Si è verificato nullun errore durante il caricamento dell'API di Google. Puoi controllare FireBug se è stato caricato correttamente.

L'esempio a cui fai riferimento potrebbe utilizzare l'API di Google 2 precedente anziché la versione 3. Non hai più bisogno di una chiave API e puoi aggiungere l'API di Google usando:

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

Dai un'occhiata ai test unitari per i livelli API di Google v3 che potrebbero aiutarti.

Ricorda che StreetView necessita anche di Flash nel browser.


Ciao, grazie per il tuo aiuto. Al momento non sono alla mia scrivania, quindi non sarò in grado di testare i tuoi suggerimenti, ma ecco quello che so: sto sicuramente caricando l'API di Google Maps v3. Ho già implementato StreetView nelle app Web, ma questa volta sto cercando di ottenere anche l'overlay sulla mappa. Mi chiedo però se è una cosa da browser. Il sito web a cui ho fornito un link funziona perfettamente in IE (8) ma non in Firefox ... qualche idea?
Cattura

La demo non funziona per me in FF6, IE8 o IE9. Sembra mostrare solo una mappa o una vista sulla strada ..
geographika,

Hmmm, il sito web sembra funzionare nel mio IE8 qui .... andando a consultare anche l'elenco degli utenti di OpenLayers ora!
Cattura

1

Il motivo per cui layer.mapObject è null è che la proprietà mapObject viene creata dopo che il layer è stato aggiunto alla mappa. Prova questo:

var layer = new OpenLayers.Layer.Google("Google Street", {sphericalMercator: true});
map.addLayer(layer);
layer.mapObject.addOverlay(new GStreetviewOverlay());
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.