Comment convertir une adresse en un lien Google Maps (PAS MAP)

297

Après avoir cherché (Google) sur le Web pendant un certain temps, je ne trouve rien qui prenne une adresse comme:

1200 Pennsylvania Ave SE, Washington, District of Columbia, 20003

et le convertit en un lien cliquable:

http://maps.google.com/maps?f=q&source=s_q&hl=en&q=1200+Pennsylvania+Ave+SE,+Washington,+District+of+Columbia,+20003&sll=37.0625,-95.677068&sspn=44.118686,114.169922 & ie = UTF8 & cd = 1 & geocode = FT5MUQIdIDlp-w & split = 0 & ll = 38.882147, -76.99017 & spn = 0.01064,0.027874 & z = 16 & iwloc = A

jQuery ou PHP préféré ou tout simplement des informations utiles à ce sujet.

Phill Pafford
la source

Réponses:

681

Que dis-tu de ça?

https://maps.google.com/?q=1200 Pennsylvania Ave SE, Washington, District of Columbia, 20003

https://maps.google.com/?q=term

Si vous avez lat-long, utilisez l'URL ci-dessous

https://maps.google.com/?ll=latitude,longitude

Exemple: maps.google.com/?ll=38.882147,-76.99017

METTRE À JOUR

Depuis l'année 2017, Google dispose désormais d'un moyen officiel de créer des URL Google Maps multiplateformes:

https://developers.google.com/maps/documentation/urls/guide

Vous pouvez utiliser des liens comme

https://www.google.com/maps/search/?api=1&query=1200%20Pennsylvania%20Ave%20SE%2C%20Washington%2C%20District%20of%20Columbia%2C%2020003 
Chris B
la source
7
Comment créer avec Latitude et Longitude?
nadeem gc
4
Il semble que cette méthode soit un peu floconneuse si l'utilisateur utilise la nouvelle Google Maps. Pour créer un lien qui force la page résultante à apparaître en mode classique, il suffit de l'ajouter &output=classicà votre lien. Donc, le tout ressemblerait à ceci:http://maps.google.com/?q=1200%20Pennsylvania%20Ave%20SE,%20Washington,%20District%20of%20Columbia,%2020003&output=classic
Matt
4
@Matt Comment c'est floconneux? De plus, output = classic ne restera pas indéfiniment, et que se passe-t-il si l'utilisateur préfère les nouvelles cartes?
Chris B
2
Est-il possible d'obtenir la punaise sur la carte via l'URL?
Flea
5
Cela fonctionne toujours très bien (merci @ChrisB!) Mais il semble que le propre format de Google Maps soit maintenant https://www.google.com/maps/place/1200 Pennsylvania Ave SE, Washington, District of Columbia, 20003 ¶ Pour certains endroits, vous pouvez vous en tirer en utilisant uniquement le nom ... mais maps.google.com/?q=et www.google.com/maps/place/ne retournerez pas nécessairement les mêmes résultats: se https://www.google.com/maps/place/White Housedéveloppe en https://www.google.com/maps/place/The+White+House,+1600+Pennsylvania+Ave+NW,+Washington,+DC+20500mais https://maps.google.com/?q=White Houseme donne un magasin d'antiquités en Caroline du Nord
henry
67

Je sais que je suis très en retard dans le jeu, mais j'ai pensé contribuer pour la postérité.

J'ai écrit une courte fonction jQuery qui transformera automatiquement toutes les <address>balises en liens Google Maps.

Voir une démo ici.

$(document).ready(function () {
   //Convert address tags to google map links - Michael Jasper 2012
   $('address').each(function () {
      var link = "<a href='http://maps.google.com/maps?q=" + encodeURIComponent( $(this).text() ) + "' target='_blank'>" + $(this).text() + "</a>";
      $(this).html(link);
   });
});

Prime:

Je suis également tombé sur une situation qui appelait à générer des cartes intégrées à partir des liens, et bien que je partagerais avec les futurs voyageurs:

Voir une démo complète

$(document).ready(function(){
    $("address").each(function(){                         
        var embed ="<iframe width='425' height='350' frameborder='0' scrolling='no'  marginheight='0' marginwidth='0' src='https://maps.google.com/maps?&amp;q="+ encodeURIComponent( $(this).text() ) +"&amp;output=embed'></iframe>";
        $(this).html(embed);             
    });
});
Michael Jasper
la source
@Michael Jasper merci pour le code ur ... cela m'a donné la carte en div ... mais mon problème est que les informations sur les broches sont affichées ... ce que je ne veux pas. alors pouvez-vous me guider comment ne pas ouvrir la boîte d'informations sur les broches.?????.thnx à l'avance ...
Shwet
3
Veuillez noter que la <address>balise HTML5 n'est pas destinée à fournir une adresse postale, mais à fournir des informations de contact liées au contenu (généralement l'auteur). developer.mozilla.org/en-US/docs/Web/HTML/Element/address
Neograph734
Très bonne réponse! Merci d'avoir partagé. Je ne suis pas sûr des conséquences à ce sujet, mais cela a fonctionné même sans encodeURIComponent().
moreirapontocom
12

Février 2016:

Je devais le faire en fonction des valeurs de base de données entrées par le client et sans générateur lat / long. Google aime vraiment les lat / long ces jours-ci. Voici ce que j'ai appris:

1 Le début du lien ressemble à ceci: https://www.google.com/maps/place/

2 Ensuite, vous mettez votre adresse:

  • Utilisez un + au lieu de n'importe quel espace.
  • Mettez une virgule devant et derrière la ville.
  • Inclure le code postal / zip et la province / l'état.
  • Remplacez n'importe quel # par rien.
  • Remplacez ++ ou ++++ par single +

3 Mettez l'adresse après le lieu /

4 Mettez ensuite une barre oblique à la fin.

REMARQUE: la barre oblique à la fin était importante. Une fois que l'utilisateur a cliqué sur le lien, Google continue et ajoute plus à l'URL et il le fait après cette barre oblique.

Exemple de travail pour cette question:

https://www.google.ca/maps/place/1200+Pennsylvania+Ave+SE,+Washington,+DC+20003/

J'espère que ça aide.

Colin P
la source
tandis que l'exemple fonctionne, je n'ai pas pu recréer cela pour une adresse allemande. J'ai fini par implémenter la réponse de Chris B (... /? Q = term).
gl03
Heureusement, cela fonctionne également pour les adresses allemandes. Voir: google.com/maps/place/…
Yannick Schuchmann
2

Empruntant aux solutions de Michael Jasper et Jon Hendershot, je propose ce qui suit:

$('address').each(function() {
    var text = $(this).text();

    var q    = $.trim(text).replace(/\r?\n/, ',').replace(/\s+/g, ' ');
    var link = '<a href="http://maps.google.com/maps?q=' + encodeURIComponent(q) + '" target="_blank"></a>';

    return $(this).wrapInner(link);
});

Cette solution offre les avantages suivants par rapport aux solutions précédemment proposées:

  • Il ne supprimera pas les balises HTML (par exemple les <br>balises) à l'intérieur <address>, donc la mise en forme est préservée
  • Il code correctement l'URL
  • Il écrase les espaces supplémentaires afin que l'URL générée soit plus courte et plus propre et lisible par l'homme après l'encodage
  • Il produit un balisage valide (la solution de Mr.Hendershot crée <a><address></address></a>ce qui n'est pas valide car les éléments de niveau bloc tels que <address>ne sont pas autorisés dans les éléments en ligne tels que <a>.

Avertissement : si votre <address>balise contient des éléments de niveau bloc comme <p>ou <div>, alors ce code JavaScript produira un balisage non valide (car la <a>balise contiendra ces éléments de niveau bloc). Mais si vous faites juste des trucs comme ça:

<address>
  The White House
  <br>
  1600 Pennsylvania Ave NW
  <br>
  Washington, D.C.  20500
</address>

Ensuite, cela fonctionnera très bien.

7over21
la source
J'ai utilisé votre solution dans mon projet en ajustant simplement votre code à mes besoins. Cela fonctionne pour l'instant.
Mycodingproject
2

Voici ce que j'ai trouvé dans l'un des articles de Google Maps:

  1. Ouvrez Google Maps .
  2. Assurez-vous que la carte ou l'image Street View que vous souhaitez intégrer s'affiche sur la carte.
  3. Dans le coin supérieur gauche, cliquez sur le menu principal ☰.
  4. Cliquez sur Partager ou intégrer la carte .
  5. En haut de la boîte qui s'affiche, choisissez l' onglet Intégrer la carte .
  6. Choisissez la taille souhaitée, puis copiez le code et collez-le dans le code source de votre site Web ou blog.

Remarque : Si vous utilisez Maps en mode Lite , vous ne pourrez pas intégrer de carte. Gardez à l'esprit que les informations sur le trafic et certaines autres informations sur les cartes peuvent ne pas être disponibles dans la carte intégrée.

entrez la description de l'image ici

PCM
la source
Ça marche pour moi. Copiez ce code intégré et collez-le sur votre site Web.
Kabir Hossain
1

Sur http://www.labnol.org/internet/tools/short-urls-for-google-maps/6604/ ils affichent une URL courte qui fonctionne plutôt bien

Les URL de Google Maps sont assez difficiles à utiliser, en particulier lors de l'envoi par messagerie instantanée, tweet ou e-mail. MapOf.it vous offre un moyen rapide de créer un lien vers Google Maps en spécifiant simplement l'adresse de l'emplacement comme paramètre de recherche.

http://mapof.it/

Je l'ai utilisé pour quelques applications que j'ai conçues et cela a fonctionné comme un charme.

Web personnalisé
la source
1
http://maps.google.com/maps?q=<?php echo urlencode($address); ?> 

l'encode ur conver et ajoute tous les éléments supplémentaires comme pour les espaces et tout. afin que vous puissiez facilement récupérer le code texte de l'avion à partir de db et l'utiliser sans vous soucier des caractères spéciaux à ajouter

dhpratik
la source
1
encodeURIComponent est javascript, vous devez utiliser urlencode ($ address);
ximi
1

La meilleure façon est d'utiliser cette ligne:

var mapUrl = "http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=16900+North+Bay+Road,+Sunny+Isles+Beach,+FL+33160&amp;aq=0&amp;sll=37.0625,-95.677068&amp;sspn=61.282355,146.513672&amp;ie=UTF8&amp;hq=&amp;hnear=16900+North+Bay+Road,+Sunny+Isles+Beach,+FL+33160&amp;spn=0.01628,0.025663&amp;z=14&amp;iwloc=A&amp;output=embed"

N'oubliez pas de remplacer les première et deuxième adresses si nécessaire.

Vous pouvez regarder l'échantillon de travail

Eugene Bosikov
la source
1

J'ai eu un problème similaire où j'avais besoin d'accomplir cela pour chaque adresse sur le site (chacune enveloppée dans une balise d'adresse). Ce morceau de jQuery a fonctionné pour moi. Il saisira chaque <address>balise et l'enveloppera dans un lien google maps avec l'adresse contenue dans la balise!

$("address").each(function(){

    var address = $(this).text().replace(/\,/g, '');
    var url = address.replace(/\ /g, '%20');

    $(this).wrap('<a href="http://maps.google.com/maps?q=' + url +'"></a>');

}); 

Exemple de travail -> https://jsfiddle.net/f3kx6mzz/1/

Jon Hendershot
la source
2
Au lieu d'essayer manuellement d'échapper l'URL de la chaîne, vous pouvez utiliser à la encodeURIComponentplace.
Samuel
0

En outre, toute personne souhaitant manuellement URLENCODE l'adresse: http://code.google.com/apis/maps/documentation/webservices/index.html#BuildingURLs

Vous pouvez l'utiliser pour créer des règles spécifiques qui répondent aux normes GM.

Ed Meacham
la source
Cela mène maintenant à un 404, malheureusement.
Darren Monahan
1
Désolé. Ce commentaire est très ancien ... Je doute que la version de l'API qui était utilisée dans cette question soit toujours là, mais voici à quoi le lien faisait référence: web.archive.org/web/20110420023220/https:// code.google.com/apis/…
Ed Meacham
0

La méthode C # Replace fonctionne généralement pour moi:

foo = "http://maps.google.com/?q=" + address.Text.Replace(" ","+");
Mr.Sprung
la source
0

Je viens de trouver cela et j'aime partager ..

  1. recherchez votre adresse sur maps.google.com
  2. cliquez sur l'icône d'engrenage en bas à droite
  3. cliquez sur "carte partagée ou intégrée"
  4. cochez la case url courte et collez le résultat dans href.
Inconnu-moi
la source