非常に長い質問があります。1 人または多くの人が助けてくれることを願っています。オンラインで見つけた、2 つの緯度と経度の座標を指定して、2 つの間の距離を求める関数に問題があります。機能は次のとおりです。
<script>
function handler(location) {
var latitude = location.coords.latitude;
var longitude = location.coords.longitude;
document.getElementById('lat').value = latitude;
document.getElementById('long').value = longitude;
}
navigator.geolocation.getCurrentPosition(handler);
</script>
次に、隠しフィールドとともに下部にボタンがあります。
<input type="submit" id="button" name='submit' value="Bounce" onClick="handler(location)">
<input type='hidden' name='latitude'id="lat">
<input type='hidden' name='longitude' id="long">
そのため、送信ボタンをクリックすると、関数が呼び出され、非表示フィールドの値が、送信時に PHP への投稿の緯度と経度に設定されます。ただし、この関数 (php および mysql コードと共に) は、電話から Web ページを実行するたびに、わずかに異なる座標を挿入します...電話がまったく動かされていなくても。
1.クライアント側でユーザーの緯度と経度を取得でき、実際に正確で一貫している別のjavascript/jquery/whateverを知っている人はいますか?
また、緯度と経度の 2 つの値、つまり lat1、long1、lat2、long2 の間の距離を見つけようとしています。関数を介してlat1、long1、lat2、long2を通過し、距離をメートル単位で返すだけでこの距離を見つけると思われる多くのphp計算を見つけましたが、2つのデバイスがほぼ同じである場合、毎回非常に大きな数を返します緯度と経度の座標であり、Web ページが呼び出されるとすぐ隣り合っています。以下は、正しい値を返さないことがわかったいくつかの php コードです。
function distanceGeoPoints ($lat1, $lng1, $lat2, $lng2) {
$earthRadius = 3958.75;
$dLat = deg2rad($lat2-$lat1);
$dLng = deg2rad($lng2-$lng1);
$a = sin($dLat/2) * sin($dLat/2) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) *sin($dLng/2) * sin($dLng/2);
$c = 2 * atan2(sqrt($a), sqrt(1-$a));
$dist = $earthRadius * $c;
// from miles
$geopointDistance = $dist;
return $geopointDistance;
}
function vincentyGreatCircleDistance($latitudeFrom, $longitudeFrom, $latitudeTo, $longitudeTo){
// convert from degrees to radians
$earthRadius = 6371000;
$latFrom = deg2rad($latitudeFrom);
$lonFrom = deg2rad($longitudeFrom);
$latTo = deg2rad($latitudeTo);
$lonTo = deg2rad($longitudeTo);
$lonDelta = $lonTo - $lonFrom;
$a = pow(cos($latTo) * sin($lonDelta), 2) + pow(cos($latFrom) * sin($latTo) - sin($latFrom) * cos($latTo) * cos($lonDelta), 2);
$b = sin($latFrom) * sin($latTo) + cos($latFrom) * cos($latTo) * cos($lonDelta);
$angle = atan2(sqrt($a), $b);
return $angle * $earthRadius;
}
2.他の誰かがこの問題を抱えていたり、私が間違っていることを知っているかもしれませんか? これらの計算は負の緯度または経度の値を受け入れませんか? 3.うまくいけば私がまだ聞いていないphp関数を知っている人はいますか?
これは非常に長い投稿でしたが、私が質問した部分について助けていただければ幸いです.
ありがとう!