Dans notre précédent tutoriel, nous avons expliqué comment ajouter des marqueurs et personnaliser les couleurs et les menus d'une carte Google à l'aide de l'API du service. Ce didacticiel va un peu plus loin et explique comment vous pouvez créer votre propre carte personnalisée et recouvrir sur une carte Google (telle que ma carte 1896 de Portsmouth).
Dans ce didacticiel, nous allons ajouter une superposition de "prévisions météorologiques" à la carte que nous avons précédemment créée. La carte météo que j'utilise est entièrement fictive, mais les techniques abordées vous donneront la liberté de créer toutes sortes de choses intéressantes! Vous pourrez créer des cartes historiques, des cartes personnalisées, des plans rapprochés de zones spécifiques telles qu'un campus universitaire - la liste est interminable.!
Quelques points à connaître avant de commencer:
Ce tutoriel explique chaque étape, y compris les outils logiciels disponibles (heureusement!) Pour automatiser les tâches et rendre la vie beaucoup plus facile. Les fichiers source pour chaque étape sont disponibles dans le package de téléchargement.
Pour commencer, la première étape consiste à créer un modèle sur lequel vous pouvez créer votre propre superposition..
Image modèle dans laquelle vous créez votre carte. Cette image est en réalité 9984x11776 pixelsVotre objectif est de créer un modèle dans Photoshop (ou une application graphique équivalente) ayant exactement la même taille et la même forme que la carte Google que vous allez superposer, lorsqu'elle sera à son niveau. niveau de zoom le plus élevé. (maptiler.org est utile si vous n’êtes pas sûr du niveau de zoom le plus élevé dont vous avez besoin).
Pour ce faire, vous pouvez enregistrer un modèle de carte à l'aide du mashup de Maptiler, puis l'agrandir dans Photoshop au niveau de zoom maximal souhaité. Par exemple:
A ce stade, je ne vais pas compliquer les choses! Donc, dans une légère modification par rapport au didacticiel précédent, j'ai modifié le niveau de zoom maximal de 12 à 10 afin de nous permettre de gérer une taille de fichier gérable..
Une fois que vous avez votre carte jpg en utilisant le processus décrit ci-dessus, ouvrez-la dans Photoshop ou votre application graphique préférée..
Vous utiliserez cette image comme modèle et dessinerez votre propre carte par dessus. Cela permet de vous assurer que votre carte est parfaitement alignée sur la carte Google..
Jetez un coup d’œil à l’image de la carte météo que j’ai créée à ce stade, qui est disponible dans le téléchargement source.
Vous pouvez découper votre image de différentes manières pour créer les mosaïques de carte. Si vous voulez un peu d’information sur ce que vous faites, lisez la suite. Sinon, si vous ne vous souciez pas de savoir pourquoi ou comment cela fonctionne, passez directement à la section suivante.!
Un système de projection, au sens géographique, est la manière dont une carte plate est créée à partir d’un objet rond, c’est-à-dire du globe. Il existe toutes sortes de formules et d’algorithmes (franchement déroutants) pour y parvenir. Tout ce que vous devez savoir, c’est que différents systèmes de projection génèrent différentes cartes à plat du monde..
La projection de Mercator (en haut) et la projection de Gall-Peters (en bas) créent des cartes bidimensionnelles assez différentes. (Les grilles sur les images ci-dessus ne sont pas liées aux tuiles de carte Google, qui sont carrées).Pour créer un chevauchement pour une carte Google, vous devez utiliser le système «Mercator sphérique» qui utilise la projection de Mercator. Ceci est défini comme EPSG: 900913 ou EPSG: 3857. Pour en savoir plus sur les systèmes de projection, voir la page Web Tiles à la Google Maps.
Avant de pouvoir générer vos tuiles, vous devez déterminer la position des côtés nord, sud, ouest et est de votre carte. Comme vous utilisez le système 'Spherical Mercator', ceux-ci doivent être en mètres sphériques, par opposition à la latitude ou la longitude..
Vous pouvez trouver ces valeurs de position à l'aide de ce mashup. J'ai trouvé que la méthode la plus simple consiste à effectuer un zoom avant et à trouver un côté à la fois. Recherchez donc la valeur du côté ouest de votre carte, notez-la, puis recherchez la valeur du côté sud, etc..
Une fois que vous avez trouvé ces quatre valeurs, vous pouvez maintenant «découper» votre carte en mosaïques. Il y a deux options disponibles.
Heureusement, le logiciel MapTiler est vraiment simple à utiliser! Au moment de la rédaction de ce tutoriel, MapTiler met à jour son logiciel. Mais quelle que soit la version que vous téléchargez, voici les étapes de base:
Remarque: Si vous utilisez la nouvelle version de MapTiler, il y a un piège; vos tuiles de carte sont filigranées. Je suppose que dans certains cas, peut-être pour un projet Uni ou une preuve de concept technique, ce n'est pas un problème de toute façon. Cependant, il y a plusieurs façons de contourner ce problème. Le moyen le plus évident est d'acheter la mise à niveau pour 20 $, je crois. L'autre option consiste à utiliser le script python GDAL2Tiles. Ma préférence personnelle est d’opter pour la mise à niveau car je préférerais passer mon temps à la création plutôt qu’à supporter les irritations liées à la configuration de l’environnement de script, mais vous pouvez vous sentir différent..
Pointe: Si vous rencontrez des problèmes avec le logiciel MapTiler, le forum des utilisateurs est extrêmement utile..Une alternative à MapTiler est le script GDAL2Tiles. Le logiciel MapTiler est en fait construit sur ce script, qui s'exécute via l'interface d'invite de commande..
GDAL2Tiles est le script Python qui est au cœur de l'interface graphique de MapTiler. Vous pouvez utiliser ce script directement via l'interface d'invite de commande.GDAL2Tiles offre d'autres possibilités, mais son utilisation est également un peu plus délicate. alors ne continuez à lire que si vous avez le sens de l'aventure!
La première étape consiste à configurer l'environnement pour exécuter le script GDAL2Tiles. Cela dépend de votre système d'exploitation. Si vous utilisez une machine Windows 32 bits (cliquez ici si vous n’êtes pas sûr), vous pouvez utiliser le fichier OSGeo4W..
Si vous utilisez une machine Windows 64 bits (cliquez ici si vous n’êtes pas sûr), la configuration est un peu différente. Ces instructions sont citées (avec l'aimable autorisation) directement du blog de Jaerock Kwon, qui mérite tout le crédit pour avoir donné des instructions aussi détaillées.
Donc, en supposant que vous ayez suivi le processus (parfois traumatisant!) De configuration de l'environnement logiciel GDAL2Tiles, il est temps de faire quelque chose avec..
La ligne de commande de GDAL. L'OSGeo4W ressemble beaucoup à cela. Les commandes sont les mêmes pour les deux.Que vous ayez l'environnement OSGeo4W ou GDAL, votre invite de commande devrait ressembler à la capture d'écran ci-dessus. Vous pouvez maintenant commencer à utiliser le script GDAL2Tiles.
Tout d'abord, vous devez naviguer dans le dossier où la carte que vous souhaitez découper est enregistrée. (Ces commandes sont utiles pour vous rendre où vous devez être: dir
vous donne une liste de tout ce qui se trouve dans le répertoire courant, CD
signifie changer de répertoire, CD…
signifie déplacer d'un niveau vers le haut de l'arbre).
Une fois que vous êtes dans le bon dossier, vous pouvez commencer à créer vos tuiles. Pour créer la carte de démonstration dans ce tutoriel, ce sont les commandes que j'ai utilisées -
gdal_translate -of VRT -a_srs EPSP: 900913 -gc 0 0 -910307.6791052371 8109796.717743561 -gp 7248 0 19625270182128982186807De série
gdal2tiles.py -p mercator -z 6-10 out.vrt
Pour expliquer ce que font ces commandes, voir le gdal_translate
page et la gdal2tiles.py
page. Il existe également une commande de chaîne GDAL étroitement liée, mais elle n’est pas nécessaire dans ce cas. Quelques choses à noter sont:
-gcp
les propriétés se rapportent aux trois coins de votre carte. La première paire de valeurs après chaque gcp
propriété concerne les dimensions en pixels de votre fichier image en entrée et la deuxième paire de valeurs correspond aux coordonnées en mètres sphériques (et non en latitude et en longitude, voir ci-dessus)..Donc, pour appliquer cela à votre carte:
width;
gdal2tiles.py -p mercator -z zoom_range name_of_output_file.vrt
Une fois la deuxième commande lancée, votre ordinateur reprend vie et commence à découper votre image pour créer les mosaïques de la carte. Vous pouvez consulter les commandes exactes que j’ai tapées dans les environnements OSGeo4W et GDAL si vous n’êtes pas sûr de naviguer dans les dossiers à l’aide de l’invite de commande..
Quelle que soit la méthode utilisée pour générer vos tuiles, les dossiers générés seront les mêmes..
Toutes les mosaïques d'une carte Google ont une valeur "x" et "y". (Oui - encore un autre système de coordonnées différent!) Le premier niveau de dossiers est le niveau de zoom, puis à l'intérieur de ce niveau, le prochain niveau de dossiers est la coordonnée 'x' et à l'intérieur de ce nom de fichier, la coordonnée 'y'..
Si vous regardez la carte sur ce site, vous devriez voir que les noms de vos tuiles correspondent. En d’autres termes, allez à l’emplacement de votre choix, réglez le niveau de zoom de sorte qu’il corresponde au nom de votre dossier, puis examinez les valeurs «x» et «y» de Google. Vous devriez voir qu'ils correspondent à vos sous-dossiers et noms de fichiers pour les tuiles de carte correspondantes..
Pour vérifier que vos vignettes sont correctes, je vous recommande vivement de copier une ou deux des vignettes générées pour le niveau de zoom le plus faible dans votre fichier de carte (par exemple, le fichier Photoshop) créé au cours de l'étape précédente. Vérifiez qu'ils correspondent exactement au-dessus de votre carte. Jetez un coup d’œil dans les fichiers sources que j’ai fournis pour un exemple..
Si tout va bien alors - félicitations - le dur travail est fait!
Oh cher. Cela se produira si vous avez utilisé l'ancienne version du logiciel MapTiler ou le script GDAL2Tiles. Vos fichiers (mais pas les dossiers) sont nommés selon la convention de dénomination TMS. Si vous regardez les carreaux sur cette page, vous pouvez voir que chaque carreau a deux valeurs x et y; c'est à dire. une paire Google et une paire TMS. Il suffit de les renommer selon la convention de nommage des cartes Google..
Ce changement de nom peut être fait manuellement, mais cela prendra beaucoup trop de temps pour la plupart des cartes. Heureusement, il existe un script shell pratique qui fera le travail pour vous. Vous devez en savoir un peu plus sur les commandes très basiques de Linux, telles que la façon de changer de dossier. Avant d’exécuter le script shell, faites une copie de vos tuiles sur lesquelles travailler..
#! / bin / sh pour thisPath dans 'ls -d * / * / *' do thisFile = $ thisPath # * / * / oldY = $ thisFile% .png zoomX = $ thisPath% / * zoom = $ thisPath% / * / * newY = $ (((1<Copiez et collez le script ci-dessus dans le Bloc-notes et enregistrez-le sous le nom 'renommer' et l'extension '.sh'. Lorsque vous enregistrez le fichier "sh" dans le bloc-notes, assurez-vous que "tous les fichiers" en regard de "enregistrer en tant que type" est sélectionné et mettez le nom entre guillemets, par exemple. "Renommer.sh".
Si vous utilisez un Mac, ce script shell peut être exécuté dans Terminal (sélectionnez Applications puis Utilitaires puis Terminal).
Si vous êtes sur une machine Windows, pour exécuter des scripts shell (ou des fichiers '.sh'), vous devez utiliser Cygwin, qui est un environnement semblable à Linux pour Windows:
- Téléchargez et installez Cygwin
- Copiez le fichier 'rename.sh' que vous venez de sauvegarder dans le dossier cygwin \ bin.
- Démarrer Cygwin.
- Déplacer vers le cygwin \ bin dossier. (c'est à dire.
CD
signifie changer de répertoire,CD…
signifie déplacer l'arbre d'un niveau, etls
signifie afficher les fichiers et les dossiers du répertoire en cours.)- Rendre exécutable rename.sh en lançant
chmod 755 rename.sh
- Vous devez également le convertir en fichier Linux avant de l’exécuter, sinon vous obtiendrez des erreurs "\ r" causées par les sauts de ligne. Alors, assurez-vous que vous êtes toujours dans le cygwin \ bin dossier et courir
d2u rename.sh
- Puis déplacez-vous dans le dossier contenant vos tuiles (voir la capture d'écran ci-dessus).
- Ensuite, pour exécuter le script, tapez
renommer.sh
Une fois le script shell exécuté, vous pouvez vérifier que le travail est bien fait en consultant vos fichiers. Vérifiez si leurs noms correspondent maintenant aux coordonnées Google sur cette page.
Si vous comparez les noms de fichier dans les dossiers "Fichiers de la partie 3" et "Fichiers de la partie 4" dans les fichiers source, vous pourrez constater la différence..
Compresser vos titres de carte
Pour vous assurer que votre carte fonctionne le mieux possible, vous pouvez compresser les tuiles de la carte..
Il existe différents utilitaires de compression gratuits pour les images png, mais je me suis battu (et j’ai échoué) pour en trouver un qui était totalement gratuit et qui a fait le travail. Par exemple, le logiciel populaire PNGGauntlet ne préservait pas la structure des dossiers, alors que d'autres utilitaires gratuits imposaient une limite au nombre maximal de fichiers..
Finalement, j'ai dû mordre la balle et acheter le logiciel PNGOUTWin. Cela coûte environ 10 £, ce qui est une bonne affaire étant donné les inconvénients qui ont été épargnés! PNGOUTWin préserve la structure du fichier et vous permet de compresser tous vos fichiers à la fois..
Si vous utilisez PNGOUTWin, c'est plutôt intuitif. Mon seul avertissement est que vous devez faire une copie de vos tuiles, puis exécuter le logiciel sur la copie. Veillez également à ce que le logiciel démarre littéralement dès que vous avez sélectionné le dossier.!
JavaScript magique pour tout réunir
Ok, nous y sommes presque. Il ne reste plus qu'à attacher vos nouvelles superbes tuiles à votre carte Google..
Le code de base
Tout d’abord, jetez un coup d’œil à un exemple simple de superposition d’une carte en mosaïque (les fichiers source sont disponibles à partir du lien en haut de cette page).
Si vous effectuez un zoom avant ou arrière, la superposition de carte reste en place.
// configuration de la superposition de la carte de précipitations var rainMapOverlay = new google.maps.ImageMapType (getTileUrl: function (coord, zoom) return 'tiles / précipitations' + '/' + zoom + '/' + coord.x + '/' + coord.y + '. png';, tileSize: nouveau google.maps.Size (256, 256));Cet extrait utilise la classe ImageMapType pour créer la superposition personnalisée. le
coord.x
concerne le nom du dossier et lecoord.y
se rapporte au nom du fichier. Ceux-ci sont réunis dans le code pour créer le chemin d'accès à chaque tuile.Raccordement à la carte du festival britannique
Ceci est le produit final que vous visez. Pour créer cela, vous pouvez utiliser les mêmes techniques que celles décrites à la fin du didacticiel précédent..
Nous créons d'abord une variable (
précipitationsOverlayToggle
) pour déterminer si la superposition météo est actuellement affichée ou non. Et puis créer une nouvelle option dans lehandelRequests
fonction pour faire face à la situation lorsque le bouton de parapluie (brolly
) est cliqué.// Affiche la carte des précipitations lorsque l'utilisateur clique sur le bouton Unbrella et la supprime si elle est déjà affichée. else if (buttonPressed === "pluies") // Si la carte des précipitations ne s'affiche pas déjà, montrez-la… if (précipitationsOverlayToggle === 0) // Superpose la carte des précipitations au sommet de la carte Google festivalMap.overlayMapTypes .insertAt (0, rainMapOverlay); // Affiche la clé météo. festivalMap.controls [google.maps.ControlPosition.TOP_LEFT] .push (weatherKeyDiv); précipitationsOverlayToggle = 1; // Si la carte des précipitations est déjà affichée, masquez-la… else // supprime la carte superposée. festivalMap.overlayMapTypes.removeAt (0, rainMapOverlay); // supprime la clé météo festivalMap.controls [google.maps.ControlPosition.TOP_LEFT] .pop (weatherKeyDiv); précipitationsOverlayToggle = 0;
Quoi ensuite?
Bravo pour atteindre la fin! Si vous avez des questions, veuillez les demander dans les commentaires. Le prochain tutoriel se penchera sur la connexion à l'API Flickr, vous permettant de saisir automatiquement des photos à partir de Flickr et de les afficher sur votre carte..
Crédits d'image
- Carte de projection de Mercator - Wikipedia
- Carte de projection de Gall-Peters - Wikipedia