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?
fuente
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 delayer.map
cuál es el objeto de mapa OL) debería darle una referencia al Mapa de Google. Como esto esnull
algo, 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:
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.
fuente
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:
fuente