Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.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 将地理位置限制在10米以内_Javascript_Html_Geolocation - Fatal编程技术网

Javascript 将地理位置限制在10米以内

Javascript 将地理位置限制在10米以内,javascript,html,geolocation,Javascript,Html,Geolocation,我在网上找到了这段代码,它运行得很好。我只是想能够在距离位置警报10米以内的情况下向对象添加多个位置。不太确定如何开始任何帮助都是很好的,这不是你可以接受并解决问题的答案,但我会指引你正确的方向,我相信你能解决这个问题 您的问题: 首先,正如你已经提到的,这个代码是一个很好的开始基础。 您描述了两个目标: 有多个位置 如果它们之间的距离小于等于10米,则发出警报 另外 一一解决 问题:您可能应该使用数组来存储多个位置。 这可能看起来像这样: 变量位置=[{lat:12.314,long:0.12

我在网上找到了这段代码,它运行得很好。我只是想能够在距离位置警报10米以内的情况下向对象添加多个位置。不太确定如何开始任何帮助都是很好的,

这不是你可以接受并解决问题的答案,但我会指引你正确的方向,我相信你能解决这个问题

您的问题: 首先,正如你已经提到的,这个代码是一个很好的开始基础。 您描述了两个目标:

有多个位置 如果它们之间的距离小于等于10米,则发出警报 另外 一一解决 问题:您可能应该使用数组来存储多个位置。 这可能看起来像这样: 变量位置=[{lat:12.314,long:0.125},{lat:12.314,long:0.125}] 要了解有关数组和基本JavaScript的更多信息,我建议查看

问题: 你已经解决了这个问题的复杂部分。你可以使用 函数哈弗距离 计算两个位置之间的距离。所以你在这里所要做的一切就是将你得到的每个新位置与所有现有位置进行比较,并使用类似alert的东西来发出警报。 如果你愿意的话,我会建议你使用,但这与我的口味无关,我与这个项目无关


但是没有什么比四处玩耍更好的了,去了解那门语言,去学习。

太好了,我不想要答案,只想要一些正确方向的建议。谢谢不客气!如果您能接受以下回答,我将不胜感激:
window.onload = function() {
  var startPos;
  navigator.geolocation.watchPosition(function(position) {
  startPos = position;
  document.getElementById('startLat').innerHTML = startPos.coords.latitude;
  document.getElementById('startLon').innerHTML = startPos.coords.longitude;

  var a =  { lat: 40.6, lng: -70.4 }

  var b = { lat: startPos.coords.latitude, lon: startPos.coords.longitude }


  zone = haversineDistance(a,b);
  document.getElementById('zone').innerHTML = zone;

  if(zone < 50){
    document.getElementById('inout').innerHTML = 'IN';
  }else{
    document.getElementById('inout').innerHTML = 'OUT';
  }

});
};

var atan2 = Math.atan2
var cos = Math.cos
var sin = Math.sin
var sqrt = Math.sqrt
var PI = Math.PI

// (mean) radius of Earth (meters)
var R = 6378137

function squared (x) { return x * x }
function toRad (x) { return x * PI / 180.0 }

function haversineDistance (a, b) {
var aLat = a.latitude || a.lat
var bLat = b.latitude || b.lat
var aLng = a.longitude || a.lng || a.lon
var bLng = b.longitude || b.lng || b.lon

var dLat = toRad(bLat - aLat)
var dLon = toRad(bLng - aLng)

var f = squared(sin(dLat / 2.0)) + cos(toRad(aLat)) * cos(toRad(bLat)) * squared(sin(dLon / 2.0))
var c = 2 * atan2(sqrt(f), sqrt(1 - f))

return R * c
}