Récupérer automatiquement la latitude et la longitude d'une page Google Maps

WRInaute accro
Bonsoir,

J'utilise énormément Google Maps pour récuperer des latitudes/longitudes que je dois recopier dans un classeur Excel.
Actuellement, j'utilise le lien 'Lien' de Google Maps, je copie l'URL, la colle dans une cellule d'un classeur Excel spécial qui extrait les coordonnées puis je sélectionne les deux cases qui contiennent les deux coordonnées et enfin je copie ça dans le bon classeur Excel avec un collage spécial pour ne pas copier la formule...

En gros, c'est long et fastidieux, d'autant plus que je le fais souvent. :roll:

Ma question : peut-on aisément développer une sorte d'extension Firefox (ou tout autre moyen) qui récupererait automatiquement l'URL de la page, l'analyserait et remplirait le presse-papier ?

Vu le temps que je passe à la chose, je suis prêt à fouiller un peu pour trouver un moyen de gagner ensuite pas mal de temps.

Je suis preneur de toute suggestion.

OTP
 
WRInaute passionné
je me suis fait un petit formulaire pour récupérer une lati/longi. ca permet de positionner un marqueur à partir d'une adresse, de le déplacer puis ca copie la valeur dans le clipboard (sous firefox).
Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Latitude et longitude d'une adresse</title>
<meta name="robots" content="none">
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=<your_key>&amp;hl=fr" type="text/javascript"></script>
<script type="text/javascript">
<!--
var map = null;
var geocoder = null;
var marker = null;
var point = null;

function InitGoogleMap() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById('google_map'));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());
		point = new GLatLng(43.599414,3.925509);
		map.setCenter(point, 5);
		map.setMapType(G_HYBRID_MAP);
		geocoder = new GClientGeocoder();
	}
	document.forms['formulaire'].elements['address'].focus();
}

if (!window.clipboardData) {
	window.clipboardData = {
		setData : function(mode,content) {
			if (netscape) {
				try {
					// On test si la configuration permet l'accès au presse-papier.
					netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
				} catch (e) {
					alert("Impossible d'accéder au presse-papier. La solution est là : http://groups.google.com/group/Snipurl/web/copy-to-clipboard-not-working");
				}
				// Initialisation du composant fournit par Mozilla.
				var gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
				// Copie du texte dans le presse papier.
				gClipboardHelper.copyString(content);
			}
		}
	}
}

function showAddress(address) {
	if (geocoder) {
		geocoder.getLatLng(address, 
			function(unpoint) {
				if (!unpoint) {
					alert(address + " not found");
				} else {
					map.setCenter(unpoint, 13);
					if (marker) {
						map.closeInfoWindow();
						map.removeOverlay(marker);
					}
					marker = new GMarker(unpoint, {draggable: true});
					map.addOverlay(marker);
					window.clipboardData.setData('Text', marker.getPoint().toUrlValue());
					marker.openInfoWindowHtml(marker.getPoint().toUrlValue()+'<br>zoom : '+map.getZoom());
					GEvent.addListener(marker, "click", function() {
						map.setCenter(unpoint, map.getZoom()+1);
					  });
					GEvent.addListener(marker, "dragstart", function() {
						map.closeInfoWindow();
					});
					GEvent.addListener(marker, "dragend", function() {
						window.clipboardData.setData('Text', marker.getPoint().toUrlValue());
						marker.openInfoWindowHtml(marker.getPoint().toUrlValue()+'<br>zoom : '+map.getZoom());
					});
				}
			}
		);
	}
}

window.onload = InitGoogleMap;
window.onunload = GUnload;
-->
</script>
</head>
<body>
<form action="#" name="formulaire" onsubmit="showAddress(this.address.value); return false;">
	<p>
	<input type="text" size="60" name="address" value="">
	<input type="submit" value="Go!">
	</p>
	<div id="google_map" style="width: 1000px; height: 450px;"></div>
</form>
</body>
</html>
 
WRInaute accro
@forty : tu crois qu'on peut modifier la page pour avoir :

1- le zoom actif à la roulette
2- la fenêtre à la demande quand on a trouvé le point recherché ?

Michaël
 
WRInaute accro
1- Merci pour le lien.

2- Ton outil actuel : on saisit le nom, on a les lat/long illico
Ce que je voudrais faire : on saisit le nom, on affine la position, puis un clic sur un 2ème bouton affiche la fenêtre
 
WRInaute passionné
tel que c'est actuellement tu peux déplacer le marqueur. La fenêtre se réaffiche automatiquement avec les nouvelles coordonnées.
 
WRInaute accro
J'ai légèrement changé le code pour :

- activer la roulette
- que les coordonnées soient directement collables dans deux cellules Excel adjacentes.

Code:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>Latitude et longitude d'une adresse</title>
<meta name="robots" content="none">
<script src="http://maps.google.com/maps?file=api&amp;v=2&amp;key=<cle>&amp;hl=fr" type="text/javascript"></script>
<script type="text/javascript">
<!--
var map = null;
var geocoder = null;
var marker = null;
var point = null;

function InitGoogleMap() {
   if (GBrowserIsCompatible()) {
	  map = new GMap2(document.getElementById('google_map'));
	  map.addControl(new GLargeMapControl());
	  map.addControl(new GMapTypeControl());
	  map.addControl(new GScaleControl());
	  point = new GLatLng(43.599414,3.925509);
	  map.setCenter(point, 5);
	  map.setMapType(G_HYBRID_MAP);
	  geocoder = new GClientGeocoder();
	  map.enableScrollWheelZoom();
   }
   document.forms['formulaire'].elements['address'].focus();
}

if (!window.clipboardData) {
   window.clipboardData = {
	  setData : function(mode,content) {
		 if (netscape) {
			try {
			   // On test si la configuration permet l'accès au presse-papier.
			   netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
			} catch (e) {
			   alert("Impossible d'accéder au presse-papier. La solution est là : http://groups.google.com/group/Snipurl/web/copy-to-clipboard-not-working");
			}
			// Initialisation du composant fournit par Mozilla.
			var gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
			// Copie du texte dans le presse papier.
			gClipboardHelper.copyString(content);
		 }
	  }
   }
}

function showAddress(address) {
   if (geocoder) {
	  geocoder.getLatLng(address,
		 function(unpoint) {
			if (!unpoint) {
			   alert(address + " not found");
			} else {
			   map.setCenter(unpoint, 13);
			   if (marker) {
				  map.closeInfoWindow();
				  map.removeOverlay(marker);
			   }
			   marker = new GMarker(unpoint, {draggable: true});
			   map.addOverlay(marker);
			   window.clipboardData.setData('Text', marker.getPoint().lat()+'\t'+marker.getPoint().lng());
			   marker.openInfoWindowHtml(marker.getPoint().lat()+'\t'+marker.getPoint().lng()+'<br>zoom : '+map.getZoom());
			   GEvent.addListener(marker, "click", function() {
				  map.setCenter(unpoint, map.getZoom()+1);
				 });
			   GEvent.addListener(marker, "dragstart", function() {
				  map.closeInfoWindow();
			   });
			   GEvent.addListener(marker, "dragend", function() {
				  window.clipboardData.setData('Text', marker.getPoint().lat()+'\t'+marker.getPoint().lng());
				  marker.openInfoWindowHtml(marker.getPoint().lat()+'\t'+marker.getPoint().lng()+'<br>zoom : '+map.getZoom());
			   });
			}
		 }
	  );
   }
}

window.onload = InitGoogleMap;
window.onunload = GUnload;
-->
</script>
</head>
<body>
<form action="#" name="formulaire" onsubmit="showAddress(this.address.value); return false;">
   <p>
   <input type="text" size="60" name="address" value="">
   <input type="submit" value="Go!">
   </p>
   <div id="google_map" style="width: 1400px; height: 650px;"></div>
</form>
</body>
</html>

Ca marche nickel et ça va me faire gagner beaucoup de temps.

Merci Forty !
 
WRInaute accro
Si, car ça me rend un grand service.
Je viens déjà d'utiliser une 50aine de fois la page en question !
 
Discussions similaires
Haut