sql >> データベース >  >> RDS >> Mysql

マーカーを座標で100メートル移動する方法

    Haversineを使用して、メートル単位の2つのポイント間の差を計算します。次に、人の座標の値を比例的に調整します。

    $radius = 6378100; // radius of earth in meters
    $latDist = $lat - $lat2;
    $lngDist = $lng - $lng2;
    $latDistRad = deg2rad($latDist);
    $lngDistRad = deg2rad($lngDist);
    $sinLatD = sin($latDistRad);
    $sinLngD = sin($lngDistRad);
    $cosLat1 = cos(deg2rad($lat));
    $cosLat2 = cos(deg2rad($lat2));
    $a = ($sinLatD/2)*($sinLatD/2) + $cosLat1*$cosLat2*($sinLngD/2)*($sinLngD/2);
    if($a<0) $a = -1*$a;
    $c = 2*atan2(sqrt($a), sqrt(1-$a));
    $distance = $radius*$c;
    

    次の価値観を養う:

    $lat = 51.26667;        //  Just South of Aardenburg in Belgium
    $lng = 3.45417;
    $lat2 = 51.575001;      //  To the East of Breda in Holland
    $lng2 = 4.83889;
    

    102059.82251083メートル、102.06キロメートルの結果が得られます

    調整する比率は100/102059.82251083 =0.0009798174985988102859004569070625

    $newLat = $lat + (($lat2 - $lat) * $ratio);
    $newLng = $lng + (($lng2 - $lng) * $ratio);
    

    新しい緯度51.266972108109と経度3.4555267728867を提供します



    1. SELECT(MYSQL / PHP)で2つのテーブルを結合する

    2. MYSQLコンプレックスユニオン

    3. Oracleで関数を呼び出す方法

    4. SQL-SUM()のWHERE条件