Intégrer une carte OpenStreetMap sur un site internet

Fabrice Webmastering 2 mn

Carte OpenStreetMap
Contrairement à Google Maps qui utilise directement les adresses physiques, OpenStreetMap nécessite la latitude et la longitude pour afficher une carte (pour obtenir la conversion, vous trouverez les informations sur la page aide d’OpenStreetMap). Mais ce n’est pas suffisant pour embarquer une carte sur un site internet, il faut en plus se positionner par rapport aux carreaux de fond de carte. Pour cela le Wiki d’OpenStreetMap fournit les équations mathématiques pour la conversion.


function openstreetmap_iframe($lon, $lat, $zoom=13) {

	// Fonction fournie par OpenStreetMap (je ne l'ai pas inventée !)	
	$xtile = floor((($lon + 180) / 360) * pow(2, $zoom));
	$ytile = floor((1 - log(tan(deg2rad($lat)) + 1 / cos(deg2rad($lat))) / pi()) /2 * pow(2, $zoom));
	$n = pow(2, $zoom);
	$lon_deg = $xtile / $n * 360.0 - 180.0;
	$lat_deg = rad2deg(atan(sinh(pi() * (1 - 2 * $ytile / $n))));
	
	// On construit l'URL à embarquer dans l'iframe
	$urliframe = 'https:⁄⁄www.openstreetmap.org/export/embed.html?bbox='.$lon.'%2C'.$lat.'%2C'.$lon_deg.'%2C'.$lat_deg.'&marker='.$lat.'%2C'.$lon.'&layers=ND';

	return $urliframe;
}

Si vous souhaitez seulement l’URL :


function openstreetmap_url($lon, $lat, $zoom=13) {
	$url = 'https:⁄⁄www.openstreetmap.org/?mlat='.$lat.'&mlon='.$lon.'#map='.$zoom.'/'.$lat.'/'.$lon;
	return $url;
}