日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

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

發(fā)布時間:2024/4/17 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android 经纬度的范围内,在Android里如何判断一个指定的经纬度点是否落在一个多边形区域内... 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在lbs開發(fā)中,可能要碰到這樣的問題,如何判斷一個指定的經(jīng)緯度點(diǎn)是否落在一個多邊形區(qū)域內(nèi),比如我在地圖上畫了一個多邊形區(qū)域,然后給出一個經(jīng)緯度點(diǎn),怎樣判斷這個點(diǎn)是否在這個多邊形范圍之內(nèi),由于我用的是android平臺上的高德地圖,官網(wǎng)找了很久都沒有找到,貌似是沒有這個方法,如果有哪位發(fā)現(xiàn)了,請給我留言。但是在百度地圖的api上我發(fā)現(xiàn)了有這個方法來判斷,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用的是高德地圖,又不能換,只能另求他法,網(wǎng)上提供很多種方法來判斷,很多都不準(zhǔn),有些可以,有些不可以,這個http://www.voidcn.com/article/p-auovedll-ty.html地址的方法是可以的,這個他是用C#寫成的,我用高德的api重寫下,給大家提供個參考:

// 功能:判斷點(diǎn)是否在多邊形內(nèi)

// 方法:求解通過該點(diǎn)的水平線與多邊形各邊的交點(diǎn)

// 結(jié)論:單邊交點(diǎn)為奇數(shù),成立!

//參數(shù):

// POINT p 指定的某個點(diǎn)

// LPPOINT ptPolygon 多邊形的各個頂點(diǎn)坐標(biāo)(首末點(diǎn)可以不一致)

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 的交點(diǎn)

if ( p1.longitude == p2.longitude) // p1p2 與 y=p0.y平行

continue;

if ( point.longitude < Math.min(p1.longitude, p2.longitude)) // 交點(diǎn)在p1p2延長線上

continue;

if ( point.longitude >= Math.max(p1.longitude, p2.longitude)) // 交點(diǎn)在p1p2延長線上

continue;

// 求交點(diǎn)的 X 坐標(biāo) --------------------------------------------------------------

double x = (double)(point.longitude - p1.longitude) * (double)(p2.latitude - p1.latitude) / (double)(p2.longitude - p1.longitude) + p1.latitude;

if ( x > point.latitude )

nCross++; // 只統(tǒng)計單邊交點(diǎn)

}

// 單邊交點(diǎn)為偶數(shù),點(diǎn)在多邊形之外 ---

return (nCross % 2 == 1);

}

注意,這個LatLng類,是高德地圖api提供的,代表經(jīng)緯度,我用這個方法做了大量的臨界測試,發(fā)現(xiàn)都很準(zhǔn),沒有失誤過,而且,我也在自己的項目中使用了,效果還好,親測可用,希望對大家有幫助!!!

總結(jié)

以上是生活随笔為你收集整理的android 经纬度的范围内,在Android里如何判断一个指定的经纬度点是否落在一个多边形区域内...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。