19
edits
Line 9: | Line 9: | ||
The main operation is to calculate an extent based on the position and its accuracy. | The main operation is to calculate an extent based on the position and its accuracy. | ||
function getAccuracyExtent(aLatitude, aLongitude, aAccuracy) { | |||
var R = 6371000; // Earth radius in meters | |||
var lat1 = aLatitude*Math.PI/180; | |||
var lon1 = aLongitude*Math.PI/180; | |||
// Point at 45° North East | |||
var brng = 45*Math.PI/180; | |||
var lat2 = Math.asin( Math.sin(lat1)*Math.cos(aAccuracy/R) + | |||
Math.cos(lat1)*Math.sin(aAccuracy/R)*Math.cos(brng) ); | |||
var lon2 = lon1 + | |||
Math.atan2( Math.sin(brng)*Math.sin(aAccuracy/R)*Math.cos(lat1), | |||
Math.cos(aAccuracy/R)-Math.sin(lat1)*Math.sin(lat2)); | |||
lon2 = (lon2+Math.PI)%(2*Math.PI) - Math.PI; | |||
lat2 =lat2*180/Math.PI; | |||
lon2 =lon2*180/Math.PI; | |||
} | |||
Une fois que nous connaissons cet extent, the map is zoom to extent (center to the position with a precision reflecting the accuracy) and we query GeoNames to know geolocalised wikipedia's article and places inside the accuracy extent. If the accuracy is less than 1000 meters, we used to query GeoNames an accuracy extent based on an accuracy of 1000 meters. | Une fois que nous connaissons cet extent, the map is zoom to extent (center to the position with a precision reflecting the accuracy) and we query GeoNames to know geolocalised wikipedia's article and places inside the accuracy extent. If the accuracy is less than 1000 meters, we used to query GeoNames an accuracy extent based on an accuracy of 1000 meters. |
edits