距离计算

时间:2015-11-12 09:51:05

标签: php distance

点击此处查看图片] 1我正在尝试根据纬度和经度计算两个地方之间的距离。我将纬度和经度值存储在我的数据库中。我提供了一个下拉列表供从支架,另一个支持,我从数据库获取地名。当我选择从地方和地方我希望距离在另一个文本区域。我能够手动获得距离,但我需要动态。请帮忙。

这是我的代码。

class ProductImage(models.Model):
    image = models.ImageField(upload_to="product/", null=True, blank=True)
    name = models.CharField(max_length=255)
    [...]

class Product(models.Model):
    name = models.CharField(max_length=255)
    decsription = models.TextField(blank=True, null=True)
    images = models.ManyToManyField(ProductImage, blank=True, null=True)
    [...]

在上面的图像中,当我选择从支架,站立我需要距离距离文本字段。数据库中提供了支架纬度和经度值。

1 个答案:

答案 0 :(得分:1)

试试这个......

function distance($lat1, $lon1, $lat2, $lon2, $unit) {

  $theta = $lon1 - $lon2;
  $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) +  cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta));
  $dist = acos($dist);
  $dist = rad2deg($dist);
  $miles = $dist * 60 * 1.1515;
  $unit = strtoupper($unit);

  if ($unit == "K") {
    return ($miles * 1.609344);
  } else if ($unit == "N") {
      return ($miles * 0.8684);
    } else {
        return $miles;
      }
}

echo distance(32.9697, -96.80322, 29.46786, -98.53506, "M") . " Miles<br>";
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "K") . " Kilometers<br>";
echo distance(32.9697, -96.80322, 29.46786, -98.53506, "N") . " Nautical Miles<br>";

演示:https://eval.in/467537