在lbs开发中,可能要碰到这样的问题,如何判断一个指定的经纬度点是否落在一个多边形区域内,比如我在地图上画了一个多边形区域,然后给出一个经纬度点,怎样判断这个点是否在这个多边形范围之内,由于我用的是android平台上的高德地图,官网找了很久都没有找到,貌似是没有这个方法,如果有哪位发现了,请给我留言。但是在百度地图的api上我发现了有这个方法来判断,http://wiki.lbsyun.baidu.com/cms/androidsdk/doc/v3_7_0/com/baidu/mapapi/utils/SpatialRelationUtil.html#isPolygonContainsPoint(java.util.List,%20com.baidu.mapapi.model.LatLng)这个isPolygonContainsPoint可以处理。没办法,我的app用的是高德地图,又不能换,只能另求他法,网上提供很多种方法来判断,很多都不准,有些可以,有些不可以,这个http://blog.csdn.net/mingojiang/article/details/8159618地址的方法是可以的,这个他是用C#写成的,我用高德的api重写下,给大家提供个参考:

// 功能:判断点是否在多边形内// 方法:求解通过该点的水平线与多边形各边的交点// 结论:单边交点为奇数,成立!//参数:// POINT p   指定的某个点// LPPOINT ptPolygon 多边形的各个顶点坐标(首末点可以不一致)public static boolean PtInPolygon(LatLng point, List<LatLng> APoints) {int nCross = 0;for (int i = 0; i < APoints.size(); i++)   {LatLng p1 = APoints.get(i);LatLng p2 = APoints.get((i + 1) % APoints.size());// 求解 y=p.y 与 p1p2 的交点if ( p1.longitude == p2.longitude)      // p1p2 与 y=p0.y平行continue;if ( point.longitude <  Math.min(p1.longitude, p2.longitude))   // 交点在p1p2延长线上continue;if ( point.longitude >= Math.max(p1.longitude, p2.longitude))   // 交点在p1p2延长线上continue;// 求交点的 X 坐标 --------------------------------------------------------------double x = (double)(point.longitude - p1.longitude) * (double)(p2.latitude - p1.latitude) / (double)(p2.longitude - p1.longitude) + p1.latitude;if ( x > point.latitude )nCross++; // 只统计单边交点}// 单边交点为偶数,点在多边形之外 ---return (nCross % 2 == 1);}

注意,这个LatLng类,是高德地图api提供的,代表经纬度,我用这个方法做了大量的临界测试,发现都很准,没有失误过,而且,我也在自己的项目中使用了,效果还好,亲测可用,希望对大家有帮助!!!

在Android里如何判断一个指定的经纬度点是否落在一个多边形区域内相关推荐

  1. android 经纬度的范围内,在Android里如何判断一个指定的经纬度点是否落在一个多边形区域内...

    在lbs开发中,可能要碰到这样的问题,如何判断一个指定的经纬度点是否落在一个多边形区域内,比如我在地图上画了一个多边形区域,然后给出一个经纬度点,怎样判断这个点是否在这个多边形范围之内,由于我用的是a ...

  2. Java判断gps点是否在中国,如何判断一个指定的位置点坐标(GPS上的经纬度)是否落在一个多边形区域内?...

    业务场景举例:快递选择收获区域.车辆电子围栏.运动轨迹路线.地理位置信息检测范围和地图等过滤等等. 比方说地图上有一块区域(抽象成多边形),然后里面每一个位置点(像素点)都有对应的GPS的经纬度坐标值 ...

  3. JAVA判断一个地理坐标是否在一个多边形区域内和是否在一个圆形区域内(经纬度)

    怎么样判断一个坐标点在一个多边形区域内?包括规则多边形,不规则多边形,还有圆... 1 判断一个坐标是否在圆形区域内? 多边形和圆分开写,首先简单的就是判断是否在圆里面,如何判断一个坐标是否在圆形区域 ...

  4. 微信小程序 - 判断一个经纬度是否在一个多边形区域内

    功能描述: 最近公司做了一个定位打卡的小程序,需要判断用户的经纬度是否在一个闭合的多边形区域内,在区域内允许打卡,否则提示"不再打卡范围".由于腾讯地图小程序SDK没有提供相关功能 ...

  5. java判断地图范围_百度地图java 判断当前位置是否在多边形区域内

    package com.haiyisoft.cAssistant.adapter.hessian; import java.awt.geom.Point2D; import java.util.Arr ...

  6. java 坐标系运算 判断一个地理坐标是否在电子围栏 圆、矩形、多边形区域内

    测试没问题,我用的是原始坐标:要注意的是坐标转换问题,要看当前是属于什么坐标系 经纬度与GCS(Geographic Coordinate System, 地理坐标系统) 平面坐标与PCS(Proje ...

  7. 判断一个点是否在多边形区域内--C算法

    /* 函数的输入: (1)当前点的坐标p (2)区域顶点数组pt[]: (3)顶点数nCount  输出: 在区域内返回TRUE,否则返回FALSE.    Point类型是一个结构:  struct ...

  8. 利用Matlab判断某些点是否在多边形区域内

    目录 1. 代码作用及实现效果 2. 技术分析: 3. 程序 1. 代码作用及实现效果 先给各位看看具体效果,如下所示,其中红色的点表示需要判断的点,是否在蓝色区域内,从图中可知,有两个点在蓝色区域内 ...

  9. 百度地图——判断一个点是否在一个区域内?

    由于目前的一个项目涉及离线地图,经过查找资料论证,最终还是决定采用百度地图.在项目过程中,遇到一个比较实际的问题:怎么判断地图上的一个点(经纬坐标下)在一个多边形区域内? 由于我采用的是百度地图Jav ...

最新文章

  1. linux shell (()) 双括号运算符使用
  2. 年月跨度_预应力跨度国内第一!1850吨146米跨度钢结构整体拔高22米!
  3. [LeetCode]: 62: Unique Paths
  4. Shiro总是将我重定向到login.jsp
  5. Android中JNI的使用方法
  6. Gcc详解以及静态库、动态库生成
  7. 推荐2022前端必看的新书 《Vue.js设计与实现》
  8. 串口服务器应用领域及应用方案详解
  9. Python之Pandas库常用函数大全(含注释)
  10. 敏捷开发日常跟进系列之三:故事板,看板
  11. 百度起诉今日头条;腾讯云超 8000 名员工获 iPhone 11 Pro 奖励;PHP 7.4.1 发布 | 极客头条...
  12. 自然语言处理入门新手上路
  13. win7修复office图标显示不正确
  14. 【Linux】Linux的进程调度
  15. 用Python采集微博视频,随时随地发现新鲜事~
  16. “数据打通”不等于“数据共融”,智能数据营销解决方案了解一下
  17. ipsec ikev2 中转
  18. 模块化 AMD与CMD 规范
  19. 中文语音评测之thchs30+gop_speechocean762实现
  20. ElasticSearch 之 Linux 安装 ElasticSearch-7.15.2(ELK、IK)

热门文章

  1. 从零开始构建gRPC的Go服务
  2. bzoj 3926 [Zjoi2015]诸神眷顾的幻想乡
  3. Elasticsearch 分布式搜索引擎 -- 数据同步:数据同步思路分析 实现elasticsearch与数据库数据同步
  4. Hibernate+Struts2进行数据的修改
  5. 武汉建养老云平台 打造互联网+养老示范城市
  6. 并行计算与分布式处理的区别
  7. tkinter 开发的 算卦小软件|python
  8. 港澳台及国外通行证正则匹配
  9. 【Quarkus技术系列】「云原生架构原理」在云原生时代下的Java“拯救者”是Quarkus,那云原生是什么呢?
  10. 位与、位或、异或、位移运算