检查任何新的纬度和经度是否在100米范围内?从我目前的位置[关闭]

问题描述 投票:-5回答:1

我有纬度和经度商店的数据集,我如何找到距离我当前位置(纬度,经度)100米范围内的商店?

javascript php html5
1个回答
2
投票

使用Haversine formula

function distance(coords1, coords2) {
  const { lat: lat1, lon: lon1 } = coords1;
  const { lat: lat2, lon: lon2 } = coords2;
  const degToRad = x => x * Math.PI / 180;
  const R = 6371;
  const halfDLat = degToRad(lat2 - lat1) / 2;  
  const halfDLon = degToRad(lon2 - lon1) / 2;  
  const a = Math.sin(halfDLat) * Math.sin(halfDLat) + 
            Math.cos(degToRad(lat1)) * Math.cos(degToRad(lat2)) * 
            Math.sin(halfDLon) * Math.sin(halfDLon);  
  const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); 
  return R * c; 
}

const paris = { lat: 48.864716, lon: 2.349014 };
const newYork = { lat: 40.730610, lon: -73.935242 };

console.log(distance(paris, newYork), 'km');

然后,您只需要遍历您的商店,使用上述功能计算它们到您所在位置的距离,并且只保留距离小于100米的那些。

我不知道你的数据是如何构建的,但如果你的商店是一个数组,你可以使用filter

const shopsNearMe =
    shopLocations.filter(shop => distance(shop.coords, myLocation) <= 0.1);
© www.soinside.com 2019 - 2024. All rights reserved.