OpenLayers con superposición de StreetView

9

Estoy tratando de agregar la funcionalidad de StreetView a mi aplicación web OpenLayers, y me gustaría agregar la superposición que muestra la disponibilidad de StreetView en el mapa. He visto un ejemplo de que se está haciendo con éxito aquí , pero no puedo hacer que el código funcione en mi propia solución. Específicamente:

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

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

da como resultado el error:

layer.mapObject is null

¿Alguien tiene alguna idea de lo que podría estar haciendo mal, y si es así, ¿cómo puedo solucionar esto?

AtraparMono
fuente

Respuestas:

4

Openlayers con Streetview

requiere la extensión GeoExt ux

todo el código está disponible, para que pueda ver lo que se está perdiendo

(si pudiera publicar un enlace en vivo a su mapa actual, los usuarios podrían depurarlo por usted).

ingrese la descripción de la imagen aquí

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

Mapperz
fuente
2
+1: esta demostración funciona. Es del mismo autor también, pero más reciente.
geographika
¿Conocería alguna otra forma de usar la capa de superposición de StreetView en OpenLayers sin usar GeoExt?
CatchingMonkey
Solo para Google Maps v2 (obsoleto) fuzzytolerance.info/code/… Clave API requerida.
Mapperz
GeoAdmin ya no parece ofrecer Street View, el ejemplo relevante que pude encontrar fue: gxp.opengeo.org/master/examples/google-streetview-panel.html (OpenLayers + GeoExt)
kryger
2

Para usar las capas de Google y cumplir con los requisitos de licencia, debe acceder a las capas de Google a través de la API de Google. Cuando agrega una capa de Google a un mapa de OpenLayers, OpenLayers carga la API de Google.

El layer.mapObject(a diferencia de layer.mapcuál es el objeto de mapa OL) debería darle una referencia al Mapa de Google. Como esto es nullalgo, salió mal al cargar la API de Google. Puede verificar en FireBug si se ha cargado correctamente.

El ejemplo al que apunta puede estar usando la API de Google 2 anterior en lugar de la versión 3. Ya no necesita una clave de API y puede agregar la API de Google usando:

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

Eche un vistazo a las pruebas unitarias para las capas API de Google v3 que pueden ayudarlo.

Recuerde que StreetView también necesita Flash en el navegador.

geographika
fuente
Hola, gracias por tu ayuda. No estoy en mi escritorio en este momento, así que no podré probar sus sugerencias, pero esto es lo que sé: definitivamente estoy cargando la API de Google Maps v3. He implementado StreetView en aplicaciones web anteriormente, pero esta vez también estoy buscando obtener la superposición en el mapa. Sin embargo, me pregunto si es una cosa del navegador. El sitio web al que le di un enlace funciona bien en IE (8) pero no en Firefox ... ¿alguna idea?
CatchingMonkey
La demo no funciona para mí en FF6, IE8 o IE9. Parece que solo muestra un mapa o una vista de la calle ..
geographika
Hmmm, el sitio web parece funcionar en mi IE8 aquí ... ¡voy a consultar la lista de usuarios de OpenLayers también ahora!
CatchingMonkey
1

La razón por la cual layer.mapObject es nulo es que la propiedad mapObject se crea después de que la capa se agrega al mapa. Prueba esto:

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