zoukankan      html  css  js  c++  java
  • 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开发中常用的Composer包

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

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

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

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

  • 相关阅读:
    lesson
    lesson
    课后习题-5
    lesson
    lesson
    lesson
    重启网络服务时 Bringing up interface eth0
    课后习题-4
    基础扩展
    课后习题-3
  • 原文地址:https://www.cnblogs.com/lxwphp/p/15453094.html
Copyright © 2011-2022 走看看