【问题标题】:check if my current location inside circle检查我当前的位置是否在圈内
【发布时间】:2021-12-23 17:36:45
【问题描述】:

我正在测试以确定我当前的位置是否在位置半径 (300m) 内。 如果是,则返回 true。否则返回false

请在下面找到当前正在使用的代码

<body>
    
    <button onclick="getLocation()">Try It</button>

    <p id="demo"></p>
    
    <script>
        //below returant location
        var resturantLat = 47.55522178620101;
        var resturantLon = -122.34152897937625;
        var radius = 300

        //show my current location in page
    var myLocation = document.getElementById("demo");

    //get my current location
    function getLocation() {
      if (navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(showPosition);
      } else { 
        myLocation.innerHTML = "Geolocation is not supported by this browser.";
      }
    }
    
    function showPosition(position) {
      myLocation.innerHTML = "Latitude: " + position.coords.latitude + 
      "<br>Longitude: " + position.coords.longitude;
    }

    var myLocationLat = position.coords.latitude;
    var myLocationLon = position.coords.longitude;
/*
if (my location inside radius){return true} else { return false}

*/ 
    </script>
</body>

【问题讨论】:

  • 如果您当前位置与圆心之间的距离小于圆的半径,则您在里面。如果它更大,那么你就在外面。

标签: javascript html web geolocation maps


【解决方案1】:

我找到答案了

    var validDistance = 500;  

   function distance(lat1, lon1, lat2, lon2, unit) {
        var radlat1 = Math.PI * lat1/180
        var radlat2 = Math.PI * lat2/180
        var radlon1 = Math.PI * lon1/180
        var radlon2 = Math.PI * lon2/180
        var theta = lon1-lon2
        var radtheta = Math.PI * theta/180
        var dist = Math.sin(radlat1) * Math.sin(radlat2) + Math.cos(radlat1) * Math.cos(radlat2) * Math.cos(radtheta);
        dist = Math.acos(dist)
        dist = dist * 180/Math.PI
        dist = dist * 60 * 1.1515
        if (unit=="K") { dist = dist * 1.609344 }
        if (unit=="N") { dist = dist * 0.8684 }
        if (unit=="M") { dist = dist * 1000 }
        return dist
}

   check = distance(24.80184269562203,46.85365721077833,50.80047136281515,46.8539082886313,"M");

if(check <validDistance){
document.getElementById("demo").innerHTML = "true"; 
}
else {
  document.getElementById("demo").innerHTML = "false"; 

}

【讨论】:

  • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-22
  • 2016-02-08
  • 1970-01-01
相关资源
最近更新 更多