jackpopp/geodistance

使用经纬度值,通过优雅的模型在指定范围内搜索位置。

1.2.3 2015-07-07 10:58 UTC

This package is not auto-updated.

Last update: 2024-09-18 07:31:59 UTC


README

GeoDistance 允许您使用经纬度值,通过优雅的模型在指定范围内搜索位置。

###设置

将 geodistance 添加到您的 composer 文件中。

"jackpopp/geodistance": "dev-master"

将 geodistance 特性添加到您的 eloquent 模型中,并将 lat/lng 列添加到您的表中。

<?php namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Jackpopp\GeoDistance\GeoDistanceTrait;

class Location extends Model {

    use GeoDistanceTrait;

    protected $fillable = ['name', 'lat', 'lng'];
    
}

现在您可以使用英里或公里来搜索一定距离内的位置。

$lat = 51.4833;
$lng = 3.1833;

$locations = Location::within(5, 'miles', $lat, $lng)->get();

$locations = Location::within(5, 'kilometers', $lat, $lng)->get();

// or 

$location = new Location();
$locations = $location->lat($lat)->lng($lng)->within(5, 'miles')->get();

您也可以搜索特定距离之外的位置。

$lat = 51.4833;
$lng = 3.1833;

$locations = Location::outside(100, 'miles', $lat, $lng)->get();

$locations = Location::outside(100, 'kilometers', $lat, $lng)->get();

// or 

$location = new Location();
$locations = $location->lat($lat)->lng($lng)->outside(100, 'miles')->get();

可用的距离单位

英里(miles/m) 公里(kilometers/km) 水里(nautical_miles) 英尺(feet)

如果您想添加其他测量单位,请创建一个新的问题。

感谢 movable-type.co.uk 提供有关在边界圆内选择点信息的帮助 - http://www.movable-type.co.uk/scripts/latlong-db.html