php判断坐标是否在指定的多边形中「建议收藏」

php判断坐标是否在指定的多边形中

大家好,又见面了,我是全栈君。

点击上方“码农编程进阶笔记”,选择“关注公众号”

技术文章第一时间送达!

如何判断一个坐标点是否在一个多边形中,具体的应用场景就是,外卖派送,用户提供的坐标是否是在外卖的派送范围之内。用户的坐标可以通过手机设备获取到,派送范围就是通过在地图上,进行多边形的绘制,获取多个坐标点连接起来的配送范围。下面来看看代码上是如何简单判断的。

mjaschen/phpgeo是一个php的geo的库,提供了一些关于地理经纬度相关的功能,例如地理围栏、距离计算等。

坐标点参考腾讯地图的demo:

https://lbs.qq.com/javascript_v2/case-run.html#sample-overlay-polygon-contains

首先composer安装此包: PHP要求至少大于7

composer require mjaschen/phpgeo

然后编写测试代码:

<?php
require './vendor/autoload.php';
 
//引入两个类
use Location\Coordinate;
use Location\Polygon;
 
//绘制一个多边形
$geo = new Polygon();
 
$geo->addPoint(new Coordinate(39.930131, 116.417301));
$geo->addPoint(new Coordinate(39.930131, 116.377476));
$geo->addPoint(new Coordinate(39.911305, 116.377476));
$geo->addPoint(new Coordinate(39.911305, 116.417301));
 
//两个坐标做测试
$a = new Coordinate(39.916527, 116.397128);
$b = new Coordinate(39.901305, 116.397128);
 
//判断是否在执行的多边形中
if ($geo->contains($a)) {
    echo "a点在多边形的范围内";
} else {
    echo "a点不在多边形的范围内";
}
 
echo "<br/>";
 
if ($geo->contains($b)) {
    echo "b点在多边形的范围内";
} else {
    echo "b点不在多边形的范围内";
}

结果:

php判断坐标是否在指定的多边形中「建议收藏」

php开发中常用的Composer包

php判断坐标是否在指定的多边形中「建议收藏」

php判断坐标是否在指定的多边形中「建议收藏」

相关视频教程:PHP高级实战教程全集(43集)

获取方式:进入公众号回复关键字:【 PHP高级实战 】

关注公众号,回复「进群」即可进入PHP高级技术交流群。

php判断坐标是否在指定的多边形中「建议收藏」

(扫码关注,获取更多知识讲解)

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/112053.html原文链接:https://javaforall.net

赞 (0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • NGINX.conf配置文件支持pathinfo

    NGINX.conf配置文件支持pathinfo

    2021年11月6日
  • Windows 10配置远程开机[通俗易懂]

    Windows 10配置远程开机[通俗易懂]简介最近有个需求,在外边或者是上班的时候想从家里的电脑拿点资料,虽然家里的路由器有公网IP地址,但是电脑总不能一直开着吧,然后就想到可以远程通过网卡唤醒电脑。前提条件拥有一个公网IP(一般可以找运营商申请),如果拥有的公网IP是动态的话,需要绑定DDNS域名,DDNS域名可以自行注册。 电脑主板支持网络唤醒功能。配置方法主板开启网络唤醒功能,如图:设置网络适配器支持唤醒…

    2022年5月5日
  • plsql如何配置连接oracle数据库,PLSQL连接Oracle 数据库配置详解「建议收藏」

    plsql如何配置连接oracle数据库,PLSQL连接Oracle 数据库配置详解「建议收藏」(oracle官网下载地址:http://www.oracle.com/technetwork/topics/winsoft-085727.html,下载地址2:http://download.csdn.net/detail/czw2010/5732241)2.解压instantclient-basic-win32-11.2.0.1.0并放置在oracle安装目录的product下(放置位置…

    2022年10月24日
  • 基于域的分解机(FFM)理论介绍及libFFM源码解析

    基于域的分解机(FFM)理论介绍及libFFM源码解析符号说明:x表示样本特征数据x表示样本特征数据y表示样本目标数据y表示样本目标数据第i个训练样本为(xi,yi),为了方便也可以用x=xi表示第i个样本第i个训练样本为\left(x_{i},y_{i}\right),为了方便也可以用x=x_{i}表示第i个样本1基于域的分解机模型(FFM)1.1线性模型∅(w,x)=wTx=w0+∑j∈C1wjxj−−−−(1)\varnothi

    2022年6月11日
  • Django(17)orm查询操作[通俗易懂]

    Django(17)orm查询操作[通俗易懂]前言查找是数据库操作中一个非常重要的技术。查询一般就是使用filter、exclude以及get三个方法来实现。我们可以在调用这些方法的时候传递不同的参数来实现查询需求。在ORM层面,这些查询条件都

    2022年7月28日
  • HDU1160(LIS)

    HDU1160(LIS)

    2022年1月9日

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号