微信小程序 - 判断一个经纬度是否在一个多边形区域内
功能描述: 最近公司做了一个定位打卡的小程序,需要判断用户的经纬度是否在一个闭合的多边形区域内,在区域内允许打卡,否则提示“不再打卡范围”。由于腾讯地图小程序SDK没有提供相关功能,所以需要自己手写造轮子。
实现思路: 首先已知一个用户坐标(x0,y0)、及一个坐标范围点的集合[{longitude:111,latitude:222},…]。由用户坐标向右侧发射一条射线,记录与区域边界的交点个数。如果个数为奇数,说明坐标点在多边形范围内;为偶数则不在范围内。如下图:
逻辑实现如下:
1、循环取两个坐标点(x1,y1)、(x2,y2),并判断用户坐标(x0,y0),的 y0 是否在 [y1,y2] 或 [y2,y1]区间内(需判断y1和y2的大小)。如果不在区间内,跳过本次循环,并执行下一个循环;
2、如果在区间内,根据公式 y=kx+b,带入坐标点(x1,y1),(x2,y2),计算 k 值和 b 值;
3、将用户坐标(x0,y0),的 y0 带入公式 y=kx+b 中计算 x 值,记为 x3。判断是否满足: x3 >= x0,如满足则视为向右射线与边界相交,交点个数 + 1。
4、判断交点个数奇偶性。为奇数,说明坐标点在多边形范围内;为偶数则不在范围内。
微信小程序 - 判断一个经纬度是否在一个多边形区域内相关推荐
- JAVA判断一个地理坐标是否在一个多边形区域内和是否在一个圆形区域内(经纬度)
怎么样判断一个坐标点在一个多边形区域内?包括规则多边形,不规则多边形,还有圆... 1 判断一个坐标是否在圆形区域内? 多边形和圆分开写,首先简单的就是判断是否在圆里面,如何判断一个坐标是否在圆形区域 ...
- 判断一个点是否在多边形区域内--C算法
/* 函数的输入: (1)当前点的坐标p (2)区域顶点数组pt[]: (3)顶点数nCount 输出: 在区域内返回TRUE,否则返回FALSE. Point类型是一个结构: struct ...
- java判断地图范围_百度地图java 判断当前位置是否在多边形区域内
package com.haiyisoft.cAssistant.adapter.hessian; import java.awt.geom.Point2D; import java.util.Arr ...
- 微信小程序,一个有局限的类似 React Native 轮子
微信小程序就是一个类似RN的轮子,可以快速开发,有一定的适用场景,但是也有其局限性.(结论是基于微信小程序的示例代码做的解读,可能存在谬误. 文末有好奇心日报小程序的二维码,欢迎围观. 2016年11 ...
- 微信小程序,一个有局限的类似 React Native 轮子!
微信小程序就是一个类似RN的轮子,可以快速开发,有一定的适用场景,但是也有其局限性.(结论是基于微信小程序的示例代码做的解读,可能存在谬误. 文末有好奇心日报小程序的二维码,欢迎围观. 2016年11 ...
- 微信小程序开发一个小型商城(八、个人页面)
上一篇文章:微信小程序开发一个小型商城(七.支付页面) 在上方还是使用wx:if进行判断是否有登录的数据,有的话将数据当中的图片和名字渲染到页面当中,不存在的话使用一个登录按钮表示需要用户登录.往下分 ...
- 微信小程序开发一个小型商城(四、商品列表)
上一篇文章,微信小程序开发一个小型商城(三.商品分类设计) 在从上一个界面跳转过来,会看到商品列表这个界面:如下图所示: 页面分析:从上到下:分别是一个已经定义好的自定义组件,下面的综合,销量,也是一 ...
- 微信小程序开发一个小型商城(五、商品详情)
上一篇文章:微信小程序开发一个小型商城(四.商品列表) 在从上一个界面跳转过来,会看到商品详情这个界面goods_detail :如下图所示: 页面分析:从上到下:一个轮播图+一个view标签存储商品 ...
- 微信小程序开发一个小型商城(七、支付页面)
上一篇:微信小程序开发一个小型商城(六.购物车页面) 在这里,基本上是与购物车页面相似的: 在从购物车页面跳转过来,在购物车界面对购物车商品会进行合法判断,是否有收货人的信息和是否存在商品,而在订单页 ...
最新文章
- mysql插入第一_mySQL教程 第5章 插入 更新与删除数据
- python socket.error: [Errno 24] Too many open files
- Linux工作笔记-CentOS 调整 home分区 扩大 root分区
- 字符设备驱动程序——点亮、熄灭LED操作
- python自动生成word报告_python自动化生成分析报告,让你的工作效率提升10倍+
- 文档丨暴力破解性能问题
- 说一下syslog日志吧~~~
- Linq 操作XML文件
- struts2之自定义拦截器及拦截器生命周期分析
- JSON对象超详细讲解|对象、循环对象、嵌套对象、修改和删除对象属性
- linux桌面隐藏下面任务栏,CentOS 7 隐藏任务栏和顶栏,centos任务栏
- Multispectral Deep Neural Networks for Pedestrian Detection(BMVC 2016)论文解读
- 如何安装TFP(tensorflow概率编程)
- 工地信息化——施工现场网格化管理系统实施小记
- 实时可视化大数据项目05 -- UI界面
- 参考文献是会议论文应该什么格式?
- 什么是尾递归?(知乎转载)
- 矢量在全球规则格网地形上的叠加绘制方法
- Python 古诗写入、复制
- 关于数据库的操作语句