Calculate Weightage w.r.t Distance
by Diya_Khan
HTML
<div id="ds"></div>
<div id="dv"></div>
JavaScript
var deg2rad = function(deg) {
return deg * (Math.PI / 180);
};
var rad2deg = function(rad) {
return rad * (180 / Math.PI);
};
var getDistanceFromLatLonInM = function(lat1, lon1, lat2, lon2) {
var R = 6371000; // Radius of the earth in m
var dLat = deg2rad(lat2 - lat1); // deg2rad below
var dLon = deg2rad(lon2 - lon1);
var a = Math.sin(dLat / 2) * Math.sin(dLat / 2) + Math.cos(deg2rad(lat1)) * Math.cos(deg2rad(lat2)) * Math.sin(dLon / 2) * Math.sin(dLon / 2);
var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
var d = R * c; // Distance in meter
return Math.floor(d);
};
function getWeightageByDistance(distance){
document.getElementById("ds").innerHTML = "<span>" + distance + "</span>";
console.log("distance: " + distance);
var total_weightage = 100;
var distance_change = distance;
var division_unit = 1000;
var subtraction_unit = 4;
if(distance < 100){ // 0.1 km
division_unit = 20;
subtraction_unit = 0.5;
}
else if(distance < 1000){ // 1 km
division_unit = 50;
subtraction_unit = 1;
}
else if(distance < 10000){ // 10 km
division_unit = 500;
subtraction_unit = 2;
}
console.log("dv: " + division_unit + ", su:" + subtraction_unit);
distance_change = parseInt(distance_change - division_unit);
while(distance_change > 0){
if(total_weightage === 0){
break;
}
distance_change = parseInt(distance_change - division_unit);
console.log("dc: " + distance_change);
total_weightage -= subtraction_unit;
console.log("tw: " + total_weightage);
}
return total_weightage/10;
}
var popularity = 0;
var lat1 = 37.785834, lon1 = -122.406417;
var lat2 = 37.777119, lon2 = -122.41964;
var d = getDistanceFromLatLonInM(lat1, lon1, lat2, lon2);
popularity += getWeightageByDistance(d);
document.getElementById("dv").innerHTML...