2017-07-06 1 views
0

私は、ロケーションサービスで不要な場所をブラックリストに載せるために何か作業をしています。ここに私の現在のコードはあります:どのように値をユーザーの値と比較し、ブラックリストに載っているかどうかを確認します。

どのように値を比較できますか?

MAIN SCRIPT:

 if (navigator.geolocation) { 
    // Locate position 
    navigator.geolocation.getCurrentPosition(displayPosition, errorFunction 

); 
    } else { 
     alert('Your device location is not approved.'); 
    } 

    // Success callback function 
    function displayPosition(pos) { 
     var mylat = pos.coords.latitude; 
     var mylong = pos.coords.longitude; 
     var thediv = document.getElementById('locationinfo'); 
     alert('Your HWID is compliant of ProtoProt regulations.'); 
    } 
     function errorFunction(pos) { 
     alert('Error: (PROTOPROT_POS_DENIED). We only use your HWID for checking compliance. Enable location to enter.'); 
     } 

VALUES DICTIONARY:

blacklisted_areas = { 
    'area 51' : [w, y], // Replace w y with the floats of long and lat 
    'pink unicorn zoo' : [w, y], // same 
    // etc. 
}; 

答えて

0

あなたのdisplayPosition関数内の緯度と経度の両方を含む配列を返し、その後にキーに対して、この配列を比較する必要がありますblacklisted_areas。これは(ES6で)以下で行うことができる

:上記のコードで

blacklisted_areas = { 
 
    'area 51': [1, 2], // Replace w y with the floats of long and lat 
 
    'pink unicorn zoo': [1, 2], // same 
 
}; 
 

 
function displayPosition(pos) { 
 
    var mylat = 1; 
 
    var mylong = 2; 
 
    return [mylat, mylong]; 
 
} 
 

 
var blacklisted = false; 
 

 
for (let x of Object.values(blacklisted_areas)) { 
 
    if (displayPosition()[0] === x[0] && displayPosition()[1] === x[1]) { 
 
    blacklisted = true; 
 
    } 
 
} 
 

 
console.log(blacklisted);

、変数blacklistedは位置がブラックリストに登録されている場合trueを返し、falseであればう変数はブラックリストに載っていません。ここから、あなたはスーツに適応することができます。

希望すると便利です。 :)

+0

ありがとうございました! –

+0

しかし、私は "blacklisted"をtrueとしてテストするときに、ユーザの位置を要求する前に成功メッセージを出すので、スクリプトをまとめるのにはいくつか問題があります。 –

+0

コードを少し修正しましたが、正しく戻ります。私の例の 'console.log(ブラックリストに載せられた)'は、関数やコールバックの中にはないので、そのコードブロックに達するとすぐに出力されることに注意してください。あなたがジオロケーションに取り組んでいるとき、私はあなたがサービスをポーリングしていると仮定しています**実行に時間がかかります。 'for'ループ全体をチェーン化し、私の例からこのサービスのコールバックに出力する必要があるかもしれません。それでブラックリストに載っているかどうかチェックする前に実際にその場所を取得します;) –

関連する問題