bagusindrayana/laravel-coordinate
Composer 安装命令:
composer require bagusindrayana/laravel-coordinate
包简介
get nearby location from eloquent laravel
README 文档
README
find data with the closest location based on its coordinates with eloquent laravel
Installation
composer require bagusindrayana/laravel-coordinate
- In Model
#use trait use Bagusindrayana\LaravelCoordinate\Traits\LaravelCoordinate; class Toko extends Model { use LaravelCoordinate; //optional public $_latitudeName = "latitude_column"; //default name is latitude public $_longitudeName = "longitude_column"; //default name is longitude // }
- Using trait
//get data at a distance of 500 meters (0.5KM) $tokos = Toko::nearby([ -0.497493,//latitude 117.156480//longitude ],0.5)->get(); //using order, remember that the order is always placed at the end of the query //get data with a distance of 1 kilometer and sort it from farthest $tokos = Toko::nearby([ -0.497493,//latitude 117.156480//longitude ],1)->farthest()->get(); //get data with a distance of 1 kilometer and sort it from closest to closest $tokos = Toko::nearby([ -0.497493,//latitude 117.156480//longitude ],1)->closest()->get(); //add a custom column containing the distance value of each record $tokos = Toko::nearby([ -0.497493,//latitude 117.156480//longitude ],0.5) //0.5 Km ->selectDistance(['id','nama_toko'],'_distance') //this function will add a custom column/alias with the name "_distance" which contains the distance value of each record ->get();
Formula
I haven't tried how much data it can handle and how fast the calculations are, so here are 3 different formulas you can try
formula paramter/arguments (int)
- 0 = default
- 1 = Spherical Law of Cosines
- 2 = Haversine formula
example :
$tokos = Toko::nearby([ -0.497493,//latitude 117.156480//longitude ], 0.5, 1//using Spherical Law of Cosines ) ->get();
Scope
nearby(coordinate,radius/distance = 5,formula = 0)
closest(coordinate,formula = 0)
farthest(coordinate,formula = 0)
selectDistance(fieldName,aliasName,formula = 0)
insideBox(coorinate(2 coordinate))
bagusindrayana/laravel-coordinate 适用场景与选型建议
bagusindrayana/laravel-coordinate 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 20.68k 次下载、GitHub Stars 达 30, 最近一次更新时间为 2021 年 07 月 08 日, 在 PHP 生态内属于活跃度较高的组件。
我们在过去多个企业项目中使用过 bagusindrayana/laravel-coordinate 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 bagusindrayana/laravel-coordinate 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
统计信息
- 总下载量: 20.68k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 30
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-07-08