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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • c语言网络通信_c语言tcp网络编程

    c语言网络通信_c语言tcp网络编程目录TCP/IP协议介绍TCP/IP协议与WinSock网络编程接口的关系WinSock编程简单流程VC中socket编程·服务器实现·客户端实现测试结果TCP/IP协议介绍TCP/I…

    2022年10月21日
    2
  • python编译安装ssl的问题解决

    python编译安装ssl的问题解决python 编译安装需要 ssl 模块才能使用 pip 且 ssl 需要支持 x509 如果 openssl 版本太低 则无法安装 ssl 对应模块 如果支持 ssl 在 configure 的时候能看到 以下不需要管理员权限 解决方案 编译安装 openssl 最新版 1 安装 openssl 下载地址 https www openssl org source 解压后进入文件夹 configprefix openssl install pathmakemake openssl in

    2025年11月25日
    2
  • numpy.meshgrid()理解

    numpy.meshgrid()理解一句话解释numpy.meshgrid()——生成网格点坐标矩阵。关键词:网格点,坐标矩阵网格点是什么?坐标矩阵又是什么鬼?我先问个问题:这张图你会生成吗?…

    2022年4月27日
    57
  • C# 多线程 Parallel.ForEach 和 ForEach 效率问题研究及理解

    C# 多线程 Parallel.ForEach 和 ForEach 效率问题研究及理解最近要做一个大数据dataTable循环操作,开始发现运用foreach,进行大数据循环,并做了一些逻辑处理。在循环中耗费的时间过长。后来换成使用Parallel.ForEach来进行循环。一开始认为, 数据比较大时,Parallel.ForEach肯定比 ForEach效率高,后来发现,其实并不是这样。我用了1000万次循环测试:{CSDN:CODE:2601125}

    2022年7月19日
    22
  • Netstat 网络命令详解

    Netstat 网络命令详解Netstat简介Netstat是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括tcp,udp以及unix套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。

    2022年7月3日
    18
  • 分布式锁简单入门以及三种实现方式介绍

    分布式锁简单入门以及三种实现方式介绍很多小伙伴在学习Java的时候,总是感觉Java多线程在实际的业务中很少使用,以至于不会花太多的时间去学习,技术债不断累积!等到了一定程度的时候对于与Java多线程相关的东西就很难理解,今天需要探讨的东西也是一样的和Java多线程相关的!做好准备,马上开车!学过Java多线程的应该都知道什么是锁,没学过的也不用担心,Java中的锁可以简单的理解为多线程情况下访问临界资源的一种线程同步机制。

    2025年9月7日
    6

发表回复

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

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