5 votos

OpenLayers 3: "goog no está definido"

Es la primera vez que utilizo OpenLayers. Me aparece el error "goog is not defined". Estos son los pasos que he realizado:

  1. Descargado y descomprimido v3.0.0-gamma.4

  2. Ha creado la siguiente estructura de directorios:

    • apidoc
    • construya
    • cierre-biblioteca
    • css
    • doc
    • ejemplos
    • ol
    • recursos
  3. Procedo a crear un archivo llamado ol3.html y lo coloco en la carpeta de ejemplos mostrada arriba. Aquí está el código de ese archivo:

    <!doctype html> <html lang="en"> <head> <link rel="stylesheet" href="../css/ol.css" type="text/css"> <style> .map { height: 400px; width: 100%; } </style> <script src="../ol/ol/ol.js" type="text/javascript"></script> <title>OpenLayers 3 example</title> </head> <body> <h2>My Map</h2> <div id="map" class="map"></div> <script type="text/javascript"> var map = new ol.Map({ target: 'map', layers: [ new ol.layer.Tile({ source: new ol.source.MapQuestOpenAerial() }) ], view: new ol.View2D({ center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'), zoom: 4 }) }); </script> </body> </html>

  4. Cuando cargo la página, me aparece el error "goog is not defined". Puedo ver que encuentra el local ol.js pero da el error "goog is not defined".

  5. Si cambio esta línea:

    <script src="../ol/ol/ol.js" type="text/javascript"></script>

    A esto:

    <script src="http://ol3js.org/en/v3.0.0-beta.1/build/ol.js" type="text/javascript"></script>

Entonces todo va bien y puedo ver el mapa. ¿Qué me falta?

8voto

flolo Puntos 8757

Necesitas tomar el archivo ol.js del directorio build. Es decir, "../build/ol.js".

También hay un archivo "ol-debug.js", que contiene una versión descomprimida de ol3.

0 votos

El problema se solucionó utilizando un archivo del directorio de compilación. Gracias.

4voto

Mike Puntos 11

Este fenómeno se debe al estilo de codificación de OpenLayers 3. OL3 está construido con Google Biblioteca de cierre que facilita el proceso de desarrollo y ofrece una tasa de compresión muy buena para el código final (quizá haya otras ventajas que desconozco). Closure tiene módulos goog clases. La biblioteca se deshace de ellas cuando el código final se compila y comprime (es decir, se construye).

Por ello, hay dos formas de utilizar OL3:

  • Utilice la biblioteca compilada del build como mencionó @Simon Zyx (más rápido, recomendado para el despliegue).
  • Incluya los archivos de secuencia de comandos apropiados de Closure Library junto con el código incorporado, p. ej. <script src="closure-library/closure/goog/base.js"></script> (más lento, recomendado para desarrollo y pruebas).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X