En nuestro tutorial anterior vimos cómo puede agregar marcadores y personalizar los colores y menús de un mapa de Google utilizando la API del servicio. Este tutorial lleva las cosas un paso más allá, explicando cómo puede crear su propio mapa personalizado y cubrir en un mapa de Google (como mi mapa de Portsmouth de 1896).
En este tutorial agregaremos una superposición de 'predicciones meteorológicas' al mapa que construimos anteriormente. El mapa del tiempo que uso es completamente ficticio, pero las técnicas cubiertas te darán la libertad de crear todo tipo de cosas interesantes. Podrás construir mapas históricos, mapas dibujados personalizados, primeros planos de áreas específicas como un campus universitario. La lista es interminable.!
Algunas cosas que debes saber antes de comenzar:
Este tutorial explica cada paso, incluidas las herramientas de software que están (¡afortunadamente!) Disponibles para automatizar las cosas y hacer la vida mucho más fácil. Los archivos fuente para cada paso están disponibles en el paquete de descarga..
Para comenzar, el primer paso es crear una plantilla en la que pueda crear su propia superposición..
Imagen de plantilla en la que creas tu mapa. Esta imagen es en realidad 9984x11776 píxelesSu objetivo es crear una plantilla en Photoshop (o aplicación de gráficos equivalente) que tenga exactamente el mismo tamaño y forma que el mapa de Google que va a superponer, cuando esté en su lugar. mayor nivel de zoom. (maptiler.org es útil si no está seguro de cuál es el nivel de zoom más alto que necesita).
Para hacer esto, puede guardar un mapa de plantilla usando el mashup del mapeador y luego agrandarlo en Photoshop al nivel de zoom máximo deseado. Por ejemplo:
En esta etapa, no voy a complicar las cosas! Así que en un ligero cambio al tutorial anterior, cambié el nivel de zoom máximo de 12 a 10 para que podamos trabajar con un tamaño de archivo manejable.
Una vez que tenga su mapa jpg utilizando el proceso descrito anteriormente, ábralo en Photoshop o en su aplicación de gráficos preferida.
Usarás esta imagen como plantilla y dibujarás tu propio mapa sobre ella. Esto es para asegurar que su mapa se alinee perfectamente con el mapa de Google.
Eche un vistazo a la imagen del mapa meteorológico que creé en esta etapa, que está disponible en la descarga de origen..
Hay un par de formas en que puede dividir su imagen para crear los mosaicos del mapa. Si quieres un poco de información de fondo sobre lo que estás haciendo, sigue leyendo. De lo contrario, si no le importa por qué o cómo funciona, simplemente pase a la siguiente sección!
Un sistema de proyección, en el sentido geográfico, es cómo se crea un mapa plano a partir de un objeto redondo, es decir, el globo. Hay todo tipo de fórmulas (francamente desconcertantes) y algoritmos utilizados para lograr esto. Todo lo que necesita saber es que los diferentes sistemas de proyección dan como resultado diferentes mapas planos del mundo.
La proyección de Mercator (arriba) y la proyección de Gall-Peters (abajo) crean mapas bidimensionales bastante diferentes. (Las cuadrículas de las imágenes anteriores no están relacionadas con los mosaicos de mapas de Google, que son cuadrados).Para crear una superposición para un mapa de Google, debe utilizar el sistema 'Mercher esférico' que utiliza la proyección de Mercator. Esto se define como EPSG: 900913 o EPSG: 3857. Para obtener más información sobre los sistemas de proyección, consulte la página web Tiles à la Google Maps.
Antes de que pueda generar sus fichas, necesita calcular la posición de los lados norte, sur, oeste y este de su mapa. Como está utilizando el sistema 'Mercator esférico', estos deben estar en medidores esféricos en lugar de latitud o longitud.
Puedes encontrar estos valores de posición usando este mashup. Descubrí que el método más sencillo es acercar y encontrar un lado a la vez. Así que encuentre el valor para el lado oeste de su mapa, tome nota de él, luego encuentre el valor para el lado sur, y así sucesivamente.
Una vez que haya encontrado estos cuatro valores, ahora puede "dividir" su mapa en mosaicos. Hay un par de opciones disponibles..
Afortunadamente, el software MapTiler es realmente fácil de usar. En el momento de escribir este tutorial, MapTiler está actualizando su software. Pero independientemente de la versión que descargue, estos son los pasos básicos:
Nota: Si está utilizando la nueva versión de MapTiler, hay un gotcha; Las fichas de tu mapa tienen marcas de agua. Supongo que en algunos casos, tal vez para un proyecto Uni o una prueba de concepto técnica, esto no es un problema de todos modos. Sin embargo, hay un par de maneras de evitar esto. La forma más obvia es comprar la actualización por $ 20, creo. La otra opción es usar la secuencia de comandos de python de GDAL2Tiles. Mi preferencia personal es apostar por la actualización porque prefiero dedicar mi tiempo a las cosas creativas, en lugar de soportar las irritaciones de configurar el entorno de scripting, pero es posible que se sienta diferente..
Propina: Si experimenta algún problema al utilizar el software MapTiler, el Foro de usuarios es extremadamente útil..Una alternativa a MapTiler es el script GDAL2Tiles. El software MapTiler en realidad está construido sobre este script, que se ejecuta a través de la interfaz del símbolo del sistema.
GDAL2Tiles es el script de Python que se encuentra en el corazón de la interfaz gráfica de MapTiler. Puede usar este script directamente a través de la interfaz del símbolo del sistema.GDAL2Tiles ofrece más posibilidades, pero también es un poco más difícil de usar; Así que solo sigue leyendo si tienes un sentido de aventura.!
La primera etapa es configurar el entorno para ejecutar el script GDAL2Tiles. Cómo haces esto depende de tu sistema operativo. Si está utilizando una máquina Windows de 32 bits (haga clic aquí si no está seguro), entonces puede usar la lata OSGeo4W.
Si está utilizando una máquina Windows de 64 bits (haga clic aquí si no está seguro), entonces la configuración es un poco diferente. Estas instrucciones se citan (con amable permiso) directamente del blog de Jaerock Kwon, quien merece todo el crédito por dar instrucciones tan detalladas..
Entonces, suponiendo que haya superado el proceso de configuración del entorno de software GDAL2Tiles (¡a veces es traumático!), Es el momento de hacer algo con él..
El indicador de comandos de GDAL. El OSGeo4W se ve muy similar a esto. Los comandos son los mismos para ambos.Ya sea que tenga el entorno OSGeo4W o GDAL, su símbolo del sistema debe ser similar a la captura de pantalla anterior. Ahora puedes empezar a usar el script GDAL2Tiles.
Primero, debe navegar a la carpeta donde se guarda el mapa que desea cortar. (Estos comandos son útiles para llegar a donde necesita estar: dir
Te da una lista de todo en el directorio actual., discos compactos
significa cambiar directorio, discos compactos…
significa mover un nivel hacia arriba en el árbol).
Una vez que esté en la carpeta correcta, puede comenzar a crear sus mosaicos. Para crear el mapa de demostración en este tutorial, estos son los comandos que usé -
gdaltranslate de VRT -a_srs EPSG: 900913 -gcp 0 0 -910307.6791052371 8109796.717743561 -gc 7
gdal2tiles.py -p mercator -z 6-10 out.vrt
Para explicar lo que están haciendo estos comandos, vea el gdal_translate
página y la gdal2tiles.py
página. También hay un comando warp GDAL que está estrechamente relacionado, pero no es necesario en este caso. Algunas cosas a tener en cuenta son:
-gcp
propiedades relacionadas con tres esquinas de su mapa. El primer par de valores después de cada uno. gcp
la propiedad se relaciona con las dimensiones en píxeles de su archivo de imagen de entrada, y el segundo par de valores son las coordenadas en metros esféricos (no latitud y longitud - vea arriba).Así que para aplicar esto a su mapa:
gdal_translate -de VRT -a_srs EPSG: 900913 -gcp 0 0 west north -gcp width_of_your_input_map_file_in_pixels 0 east north -gcpay_payasporg.p.as.jpg
gdal2tiles.py -p mercator -z zoom_range name_of_output_file.vrt
Después de ejecutar el segundo comando, su computadora cobrará vida y comenzará a cortar su imagen para crear los mosaicos del mapa. Es posible que desee ver los comandos exactos que escribí en los entornos OSGeo4W y GDAL si no está seguro de navegar por las carpetas utilizando el indicador de comandos..
Independientemente del método utilizado para generar los mosaicos, las carpetas generadas serán las mismas.
Todos los mosaicos en un mapa de Google tienen un valor 'x' e 'y'. (Sí, ¡otro sistema de coordenadas diferente!) El primer nivel de las carpetas es el nivel de zoom, luego dentro de las cuales el siguiente nivel de carpetas son la coordenada 'x', y dentro de eso el nombre del archivo es la coordenada 'y'.
Si echa un vistazo al mapa en este sitio web, debería ver que los nombres de sus mosaicos coincidan. En otras palabras, diríjase a la ubicación deseada, ajuste el nivel de zoom para que coincida con el nombre de su carpeta, luego mire los valores 'x' e 'y' de Google. Debería ver que coinciden con sus subcarpetas y nombres de archivos para los mosaicos de mapas correspondientes.
Para volver a comprobar que sus mosaicos están bien, recomiendo encarecidamente copiar uno o dos de los mosaicos generados para el nivel de zoom más bajo en su archivo de mapa (por ejemplo, el archivo de Photoshop) creado durante la etapa anterior. Comprueba que encajan exactamente en la parte superior de tu mapa. Eche un vistazo a los archivos de origen que he proporcionado para ver un ejemplo de esto..
Si todo está bien entonces - felicitaciones - el trabajo duro está hecho!
Oh querido. Esto ocurrirá si usó la versión anterior del software MapTiler o el script GDAL2Tiles. Sus archivos (pero no las carpetas) se nombran usando la convención de nombres TMS. Si observa los mosaicos en esta página, puede ver que cada mosaico tiene dos valores de x e y; es decir. un par de Google y un par de TMS. Solo tenemos que cambiarles el nombre a la convención de nombres de mapas de Google..
Este cambio de nombre se puede hacer manualmente, pero tomará demasiado tiempo para la mayoría de los mapas. Afortunadamente, hay un script de shell útil que hará el trabajo por ti. Necesita saber un poco acerca de los comandos de Linux muy básicos, como la forma de cambiar la carpeta. Antes de ejecutar el script de shell, haga una copia de sus mosaicos para trabajar.
#! / bin / sh para thisPath en 'ls -d * / * / *' haga este File = $ thisPath # * / * / oldY = $ thisFile% .png zoomX = $ thisPath% / * zoom = $ thisPath% / * / * newY = $ (((1<Copie y pegue el script anterior en el Bloc de notas y guárdelo con el nombre 'renombrar' y la extensión '.sh'. Al guardar el archivo 'sh' en el bloc de notas, asegúrese de seleccionar 'todos los archivos' junto a 'guardar como tipo', y ponga el nombre entre comillas, por ejemplo. "Rename.sh".
Si está utilizando una Mac, este script de shell se puede ejecutar en la Terminal (seleccione Aplicaciones entonces Utilidades entonces Terminal).
Si está en una máquina con Windows, para ejecutar los scripts de shell (o archivos '.sh') necesita usar Cygwin, que es un entorno similar a Linux para Windows:
- Descarga e instala Cygwin
- Copie el archivo 'rename.sh' que acaba de guardar en la carpeta cygwin \ bin.
- Iniciar cygwin.
- Mover a la cygwin \ bin carpeta. (es decir.
discos compactos
significa cambiar directorio,discos compactos…
significa subir el árbol un nivel, yls
significa mostrar los archivos y carpetas en el directorio actual.)- Hacer rename.sh ejecutable ejecutando
chmod 755 rename.sh
- También debe convertirlo en un archivo de Linux antes de ejecutarlo, de lo contrario, obtendrá los errores causados por los saltos de línea. Así que corre, asegúrate de estar en el cygwin \ bin carpeta y ejecutar
d2u rename.sh
- Luego muévase a la carpeta que contiene sus mosaicos (vea la captura de pantalla arriba).
- Luego, para ejecutar el script, escriba
rename.sh
Una vez que se haya ejecutado el script de shell, puede verificar que haya terminado el trabajo echando otro vistazo a sus archivos. Compruebe si sus nombres ahora coinciden con las coordenadas de Google en esta página.
Si compara los nombres de los archivos en los archivos de la Parte 3 y los archivos de la Parte 4 en los archivos de origen, puede ver la diferencia.
Comprimiendo los títulos de su mapa
Para asegurarse de que su mapa se ejecute de la mejor manera posible, puede comprimir sus mosaicos de mapas.
Existen varias utilidades de compresión gratuitas para imágenes png, pero luché (y fallé) para encontrar una que fuera completamente gratuita e hiciera el trabajo. Por ejemplo, el popular software PNGGauntlet no conservó la estructura de la carpeta, mientras que otras utilidades gratuitas tenían un límite en el número máximo de archivos.
Al final tuve que morder la bala y comprar el software PNGOUTWin. Esto cuesta alrededor de £ 10, lo cual es una ganga, dado el dinero que se ahorró. PNGOUTWin conserva la estructura de archivos y te permite comprimir todos tus archivos a la vez.
Si usas PNGOUTWin, es bastante intuitivo. Mi única advertencia es que debe hacer una copia de sus mosaicos y luego ejecutar el software en la copia. Además, tenga en cuenta que el software se inicia literalmente tan pronto como haya seleccionado la carpeta.!
La magia de JavaScript para unirlo todo
Está bien, ya casi estamos allí. Todo lo que queda es la pequeña cuestión de adjuntar sus nuevos mosaicos de mapas encantadores a su mapa de Google.
El codigo basico
Primero, eche un vistazo a un ejemplo simple de una superposición de mapas en mosaico (los archivos fuente están disponibles en el enlace en la parte superior de esta página).
Si se acerca y se aleja, la superposición del mapa se mantiene.
// configurando la superposición del mapa de lluvia var rainMapOverlay = new google.maps.ImageMapType (getTileUrl: function (coord, zoom) return 'tiles / precipitación' + '/' + zoom + '/' + coord.x + '/' + coord.y + '. png';, tileSize: new google.maps.Size (256, 256));Este fragmento está utilizando la clase ImageMapType para crear la superposición personalizada. los
coord.x
se relaciona con el nombre de la carpeta y lacoord.y
se relaciona con el nombre del archivo. Estos se unen en el código para crear la ruta a cada mosaico.Conectándolo al mapa del festival del Reino Unido
Este es el producto final que está buscando. Para crear esto, puede usar las mismas técnicas explicadas cerca del final del tutorial anterior.
Primero creamos una variable (
precipitacionesOverlayToggle
) para mantener si la superposición del tiempo se está mostrando o no. Y, a continuación, creando una nueva opción en elhandelRequests
función para hacer frente a la situación cuando el botón paraguas (paraguas
) se hace clic.// Muestra el mapa de precipitaciones cuando se hace clic en el botón unbrella, y se elimina si ya se muestra. else if (buttonPressed === "precipitaciones") // Si el mapa de precipitaciones NO se muestra aleady, entonces muéstrelo… if (rainOverlayToggle === 0) // Superpone el mapa de precipitaciones en la parte superior de Google map .insertAt (0, rainMapOverlay); // Mostrar la clave del tiempo. festivalMap.controls [google.maps.ControlPosition.TOP_LEFT] .push (weatherKeyDiv); precipitacionDejarTejer = 1; // Si ya se muestra el mapa de precipitaciones, entonces escóndalo ... de lo contrario // elimine el mapa de superposición. festivalMap.overlayMapTypes.removeAt (0, rainMapOverlay); // eliminar la clave del tiempo festivalMap.controls [google.maps.ControlPosition.TOP_LEFT] .pop (weatherKeyDiv); precipitacionDejarTejer = 0;
Qué sigue?
¡Bien hecho por llegar al final! Si tiene alguna pregunta, por favor pregunte en los comentarios. El siguiente tutorial le mostrará cómo conectarse a la API de Flickr, lo que le permitirá tomar fotos automáticamente de Flickr y mostrarlas en su mapa..
Créditos de imagen
- Mapa de proyección de Mercator - Wikipedia
- Mapa de proyección de Gall-Peters - Wikipedia