Javascript 如何将位置列入黑名单(半径为500英尺)

Javascript 如何将位置列入黑名单(半径为500英尺),javascript,Javascript,编辑:我已经在下面自我回答了 我曾经就此提出过一个问题,但是我无法正确设置它,整个事情都被破坏了。下面是地理定位脚本。我想将某些区域列入黑名单(如果可能,半径在500英尺以内)。请向我解释如何以及在哪里进行更改,因为我是JavaScript的初学者。非常感谢。(注意:页面上没有列表或词典,因为这是我问题的一部分。) 当前代码: if (navigator.geolocation) { // Locate position navigator.geolocation.getCurr

编辑:我已经在下面自我回答了

我曾经就此提出过一个问题,但是我无法正确设置它,整个事情都被破坏了。下面是地理定位脚本。我想将某些区域列入黑名单(如果可能,半径在500英尺以内)。请向我解释如何以及在哪里进行更改,因为我是JavaScript的初学者。非常感谢。(注意:页面上没有列表或词典,因为这是我问题的一部分。)

当前代码:

if (navigator.geolocation) {
    // Locate position
    navigator.geolocation.getCurrentPosition(displayPosition, errorFunction);
} else {
    alert('It seems like Geolocation, which is required for this page, is not enabled in your browser. Please use a browser which supports it.');
}

// Success callback function
function displayPosition(pos) {
    var mylat = pos.coords.latitude;
    var mylong = pos.coords.longitude;
    var thediv = document.getElementById('locationinfo');
    thediv.innerHTML = '<p>Your longitude is :' +
        mylong + ' and your latitide is ' + mylat + '</p>';

// Error callback function
function errorFunction(pos) {
    alert('Error!');
}
function calcCrow(coords1, coords2)
{
  // var R = 6.371; // km
  var R = 6371000;
  var dLat = toRad(coords2.latitude - coords1.latitude);
  var dLon = toRad(coords2.longitude - coords1.longitude);
  var lat1 = toRad(coords1.latitude);
  var lat2 = toRad(coords2.latitude);

  var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); 
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
  var d = R * c;
  return d;
}
if(navigator.geolocation){
//定位
navigator.geolocation.getCurrentPosition(displayPosition,errorFunction);
}否则{
警报('您的浏览器中似乎未启用此页面所需的地理位置。请使用支持它的浏览器。');
}
//成功回调函数
功能显示位置(pos){
var mylat=位置坐标纬度;
var mylong=位置坐标经度;
var thediv=document.getElementById('locationinfo');
thediv.innerHTML='您的经度是:'+
mylong+,你的纬度是“+mylat+”

”; //错误回调函数 功能错误功能(pos){ 警报('错误!'); }
给出如下黑名单结构(因为您拒绝分享任何关于您拥有的黑名单数据的信息)

你的代码被修改了

if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(displayPosition, errorFunction);
} else {
    alert('It seems like Geolocation, which is required for this page, is not enabled in your browser. Please use a browser which supports it.');
}

// Success callback function
function displayPosition(pos) {   
    var mylat = pos.coords.latitude;
    var mylong = pos.coords.longitude;
    var thediv = document.getElementById('locationinfo');
    thediv.innerHTML = '<p>Your longitude is :' + mylong + ' and your latitide is ' + mylat + '</p>';
    // additional code to output blacklist locations within 500ft
    blacklistedCoordinates
    .filter(black => calcCrow(black, pos.coords) < 500)
    .forEach(black => { // output blacklisted locations
        thediv.innerHTML = '<p>Blacklisted longitude is :' + black.longitude + ' and latitide is ' + black.latitude + '</p>';
    });
}
// Error callback function
function errorFunction(pos) {
    alert('Error!');
}

感谢Jaramoda for is awenser,它为最终解决方案做出了贡献。 首先,计算径向坐标的代码被破坏,我决定将其替换为原始代码,并进行更改,以便使用我当前的代码:

if (navigator.geolocation) {
    // Locate position
    navigator.geolocation.getCurrentPosition(displayPosition, errorFunction);
} else {
    alert('It seems like Geolocation, which is required for this page, is not enabled in your browser. Please use a browser which supports it.');
}

// Success callback function
function displayPosition(pos) {
    var mylat = pos.coords.latitude;
    var mylong = pos.coords.longitude;
    var thediv = document.getElementById('locationinfo');
    thediv.innerHTML = '<p>Your longitude is :' +
        mylong + ' and your latitide is ' + mylat + '</p>';

// Error callback function
function errorFunction(pos) {
    alert('Error!');
}
function calcCrow(coords1, coords2)
{
  // var R = 6.371; // km
  var R = 6371000;
  var dLat = toRad(coords2.latitude - coords1.latitude);
  var dLon = toRad(coords2.longitude - coords1.longitude);
  var lat1 = toRad(coords1.latitude);
  var lat2 = toRad(coords2.latitude);

  var a = Math.sin(dLat/2) * Math.sin(dLat/2) +
    Math.sin(dLon/2) * Math.sin(dLon/2) * Math.cos(lat1) * Math.cos(lat2); 
  var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
  var d = R * c;
  return d;
}
我把它连接到同一个区域,并指定它为250米(270码?) 我当然需要修改更理想距离的值

接下来,我在字典中没有我的坐标的情况下测试了它,它没有返回任何东西(一件好事,这是以前的问题)。然后我输入坐标,它工作得很好


这花了我将近一天的时间来找出问题的根源,尽管现在看起来很明显xD

这可能的重复也会有所帮助:谢谢你们两位,但是,这些帖子没有说明如何在我当前的系统中实现这些。如果你知道一种方法,请告诉Meahh,现在我们正在取得进展……所以你已经知道了如果有一个黑名单坐标,你只需要找到距某个特定位置500英尺以内的坐标-我正在变暖吗?谢谢,如果用户被黑名单,有没有办法重定向?我看不出这与问题有什么关系,搜索如何重定向我知道如何重定向,但我如何才能执行if()因为这就是我的意思
if(blacklistedCoordinates.some(black=>calcCrow(black,pos.coords)<500)){/*blacklisted,redirect*/
hold,它没有给我任何警告吗?这已经过测试了吗?如果是的话,我可能组装错了(即使是最简单的指令)