Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/372.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于地理位置获取最近距离_Javascript_Geolocation_Haversine - Fatal编程技术网

Javascript 基于地理位置获取最近距离

Javascript 基于地理位置获取最近距离,javascript,geolocation,haversine,Javascript,Geolocation,Haversine,我制作了一个脚本,用于获取用户的地理位置,使用Haversine公式计算位置和对象中项目之间的距离,并将距离记录在console.log中。我的问题是,如何仅对最近的项目进行console.log?希望有人能帮忙:) var obj=[ { 名称:“位置1”, 纬度:60.413750, 长:5.322036 }, { 名称:“位置2”, 拉脱维亚:59.749054, 长:10.203781 }, { 名称:“地点3”, 拉脱维亚:59.286271, 长:11.109228 }, { 名

我制作了一个脚本,用于获取用户的地理位置,使用Haversine公式计算位置和对象中项目之间的距离,并将距离记录在console.log中。我的问题是,如何仅对最近的项目进行console.log?希望有人能帮忙:)


var obj=[ { 名称:“位置1”, 纬度:60.413750, 长:5.322036 }, { 名称:“位置2”, 拉脱维亚:59.749054, 长:10.203781 }, { 名称:“地点3”, 拉脱维亚:59.286271, 长:11.109228 }, { 名称:“地点4”, 拉脱维亚:59.913869, 长:10.752245 } ]; var x=$(“#演示”); var hblat; var-hblong; var距离; if(导航器.地理位置){ navigator.geolocation.getCurrentPosition(显示距离); }否则{ x、 html(“此浏览器不支持地理位置。”); } 功能显示距离(位置){ hblat=位置坐标纬度; hblong=位置坐标经度; $。每个(对象、功能(键、值){ 距离=hbdistance(hblat,hblong,value.lat,value.long,'K'); 控制台日志(数学圆(距离*1000)/1000); }); } 功能hbdistance(lat1、lon1、lat2、lon2、单位){ var radlat1=Math.PI*lat1/180 var radlat2=Math.PI*lat2/180 var radlon1=Math.PI*lon1/180 var radlon2=Math.PI*lon2/180 变量θ=lon1-lon2 var radtheta=Math.PI*theta/180 var dist=数学sin(radlat1)*数学sin(radlat2)+数学cos(radlat1)*数学cos(radlat2)*数学cos(radtheta); dist=Math.acos(dist) dist=dist*180/Math.PI dist=dist*60*1.1515 如果(单位=“K”){dist=dist*1.609344} 如果(单位=“N”){dist=dist*0.8684} 返回区 }
showdestance()
中,每个
块都有一个计算距离的
,看起来不错。你甚至还把它们记录到控制台上,所以我们就快到了

让我们在这里使用一个简单的解决方案,并建立一系列距离:

function showDistance(position) {
    hblat = position.coords.latitude;
    hblong = position.coords.longitude;
    var distances = []; // Array to store distances
    $.each(obj, function(key, value){
        distance = hbdistance(hblat, hblong, value.lat, value.long, 'K');
        distances.push(distance); // Add our distance to the array
    }); 

    var min = Math.min.apply(Math, distances); // Get minimum value

    console.log(min); // Log minimum value
}
您可以在此处看到另一篇SO帖子,其中解释了如何从数组中获取最小值:


希望有帮助

太好了!非常感谢戴夫,成功了:)
function showDistance(position) {
    hblat = position.coords.latitude;
    hblong = position.coords.longitude;
    var distances = []; // Array to store distances
    $.each(obj, function(key, value){
        distance = hbdistance(hblat, hblong, value.lat, value.long, 'K');
        distances.push(distance); // Add our distance to the array
    }); 

    var min = Math.min.apply(Math, distances); // Get minimum value

    console.log(min); // Log minimum value
}