点击此处查看图片] 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)
[...]
在上面的图像中,当我选择从支架,站立我需要距离距离文本字段。数据库中提供了支架纬度和经度值。
答案 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>";