GeoCovid

geocovid.fr est un site web qui affiche, à partir de votre géolocalisation, une Google map circulaire de 100km autour de votre position.

Orthodromie

Calcul de la distance à vol d’oiseau entre 2 villes

Dans notre exemple, GeoCovid, il faut, pour pouvoir donner la liste des villes à 100km autour d’un lieu géolocalisé :

  • Une base de données avec une table contenant les communes françaises avec leurs latitudes et longitudes.
  • Une requête SQL.
la formule magique

SELECT * FROM `villes` WHERE (((acos(sin(($lat*pi()/180)) * sin((latitude*pi()/180)) + cos(($lat*pi()/180)) * cos((latitude*pi()/180)) * cos((($lng – longitude)*pi()/180))))*180/pi())*60*2.133) <= 100

$lat et $lng sont la latitude et la longitude de la ville pour laquelle vous cherchez les communes à 100 Km autour.

 

Géolocalisation

Comment géolocaliser le visiteur sur votre site ?

le code javascript

function maPosition(position) {
lat = position.coords.latitude;
long = position.coords.longitude;
window.location.href= »https://www.geocovid.fr/carte.php?lat= »+lat+ »&long= »+long;
}

if ( navigator.geolocation ) {
// L’API est disponible
navigator.geolocation.getCurrentPosition(maPosition);
}

 

Une Google map circulaire

Affichage d’une Google map centrée sur la géolocalisation
avec comme marker une petite voiture.
La carte prendra place dans le div map de la page.

le code javascript

(function ($) {
« use strict »; // Start of use strict
var marker_auto;
window.initMap = function() {
var map = new google.maps.Map(document.getElementById(‘map’), {
zoom: 9,
center: {lat: lat , lng: long }
});
var image= »https://www.geocovid.fr/images/voiture2.png »;
marker_auto = new google.maps.Marker({
map: map,
draggable: true,
icon: image,
position: {lat: lat, lng: long}
});
}
}(jQuery));

CSS

#map {
position:relative;
width: 900px;
height: 900px;
border-radius: 100%;
border: 3px black solid;
}

Avec le zoom à 9, une carte de 900px de diamètre correspondra aux 100km à vol d’oiseau