Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да преместите маркер на 100 метра с координати

Използвайте Haversine, за да изчислите разликата между двете точки в метри; след това коригирайте пропорционално стойността на координатите на човека.

$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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Защо нямам достъп до базата данни от aws lambda, но имам от локален компютър със същите данни за вход?

  2. PHP mysql формат за вмъкване на дата

  3. MySQL заявка с JOIN не използва INDEX

  4. Как да проверя дали вмъкването е неуспешно?

  5. Грешка при инсталиране на MySQL-python с pip install в OSX, virtualenv