android 经纬度的范围内,在Android里如何判断一个指定的经纬度点是否落在一个多边形区域内...
在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://www.voidcn.com/article/p-auovedll-ty.html地址的方法是可以的,这个他是用C#写成的,我用高德的api重写下,给大家提供个参考:
// 功能:判断点是否在多边形内
// 方法:求解通过该点的水平线与多边形各边的交点
// 结论:单边交点为奇数,成立!
//参数:
// POINT p 指定的某个点
// LPPOINT ptPolygon 多边形的各个顶点坐标(首末点可以不一致)
public static boolean PtInPolygon(LatLng point, List 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 经纬度的范围内,在Android里如何判断一个指定的经纬度点是否落在一个多边形区域内...相关推荐
- 在Android里如何判断一个指定的经纬度点是否落在一个多边形区域内
在lbs开发中,可能要碰到这样的问题,如何判断一个指定的经纬度点是否落在一个多边形区域内,比如我在地图上画了一个多边形区域,然后给出一个经纬度点,怎样判断这个点是否在这个多边形范围之内,由于我用的是a ...
- Java判断gps点是否在中国,如何判断一个指定的位置点坐标(GPS上的经纬度)是否落在一个多边形区域内?...
业务场景举例:快递选择收获区域.车辆电子围栏.运动轨迹路线.地理位置信息检测范围和地图等过滤等等. 比方说地图上有一块区域(抽象成多边形),然后里面每一个位置点(像素点)都有对应的GPS的经纬度坐标值 ...
- JAVA判断一个地理坐标是否在一个多边形区域内和是否在一个圆形区域内(经纬度)
怎么样判断一个坐标点在一个多边形区域内?包括规则多边形,不规则多边形,还有圆... 1 判断一个坐标是否在圆形区域内? 多边形和圆分开写,首先简单的就是判断是否在圆里面,如何判断一个坐标是否在圆形区域 ...
- 微信小程序 - 判断一个经纬度是否在一个多边形区域内
功能描述: 最近公司做了一个定位打卡的小程序,需要判断用户的经纬度是否在一个闭合的多边形区域内,在区域内允许打卡,否则提示"不再打卡范围".由于腾讯地图小程序SDK没有提供相关功能 ...
- java判断地图范围_百度地图java 判断当前位置是否在多边形区域内
package com.haiyisoft.cAssistant.adapter.hessian; import java.awt.geom.Point2D; import java.util.Arr ...
- js一个按钮弹出两个按钮_车内常见按钮,你却一个不认识?一分钟带你认识车内常见按钮...
导读:车内常见按钮,你却一个不认识?一分钟带你认识车内常见按钮 各位点开这篇文章的朋友们,想必都是很高的颜值吧,我们真的是很有缘哦,小编每天都会给大家带来不一样的汽车资讯,如果对小编的文章或者其他的什 ...
- java 坐标系运算 判断一个地理坐标是否在电子围栏 圆、矩形、多边形区域内
测试没问题,我用的是原始坐标:要注意的是坐标转换问题,要看当前是属于什么坐标系 经纬度与GCS(Geographic Coordinate System, 地理坐标系统) 平面坐标与PCS(Proje ...
- 判断一个点是否在多边形区域内--C算法
/* 函数的输入: (1)当前点的坐标p (2)区域顶点数组pt[]: (3)顶点数nCount 输出: 在区域内返回TRUE,否则返回FALSE. Point类型是一个结构: struct ...
- 利用Matlab判断某些点是否在多边形区域内
目录 1. 代码作用及实现效果 2. 技术分析: 3. 程序 1. 代码作用及实现效果 先给各位看看具体效果,如下所示,其中红色的点表示需要判断的点,是否在蓝色区域内,从图中可知,有两个点在蓝色区域内 ...
最新文章
- 基于 Go 语言构建企业级的 RESTful API 服务
- 敏捷、精益、六西格玛之间到底有什么差异?
- Spring 框架的AOP之注解的方式
- android 去锯齿
- centos7 elk7.1.1安装
- 判断是否有小数_一线老师笔记:数学判断题拿高分的技巧
- python xposed_GitHub - twqdev/CPWechatXposed: 使用Xposed Hook微信等APP
- Python入门--列表的创建
- 计算机视觉中的特征提取方式
- vc控制excel格式(转载备忘)
- MOSS 中的计算公式
- usb线连接android设备连接不上,安卓手机USB数据线连接不上电脑怎么办
- 视频教程-C语言-从汇编角度理解C语言的本质-C/C++
- 奶油面膜行业调研报告 - 市场现状分析与发展前景预测
- 【Android App】人脸识别中扫描识别二维码实战解析(附源码和演示 超详细)
- 前端2020面试题195道
- labelshop更改打印机_如何快速掌握标签打印软件LabelShop中的功能
- echarts仪表盘option_ECharts 仪表盘样式修改
- java使用File类创建文件或文件夹
- CAD图纸打印时如何设置打印纸张的方向?