我正在使用Route-Me项目开发一个iPhone应用程序。我正在使用一个名为'latitudeLongitudeBoundingBoxForScreen‘的方法,它返回一组两个坐标。在屏幕的经度/纬度定义东北角和西南角。这似乎工作得很好。
我的问题是,如何确定给定点(经度/经度)是否在这两个坐标(东北、西南)的边界内?
非常感谢您的帮助。
发布于 2011-07-20 02:50:35
对于多边形中的一般点,Point Inclusion Test似乎假设一个平凡的等长方形投影(x = lon,y= lat)。
既然你知道东北角和西南角,你就可以计算出西北角和东南角。此外,请记住,您的边界多边形(长方体)必须遵循缠绕约定(您只是不能在点包含测试中抛出点)。
如果边界框跨过180英寸长的线,这将会中断。简单的解决方法是,如果横跨180长线的长方体在负经度上加上360度。这不是一个有效的导航点,但它使数学工作。
这在两极周围也不起作用。
发布于 2018-07-26 18:01:04
我知道时间已经过去很久了,但也许有人还感兴趣。
Double lat_A, lat_B,lng_A, lng_B, curr_lat,curr_lng;
LatLng nw_corner, sw_corner;
Boolean lat_OK,lng_OK,all_OK;
int t_segs, points;
t_segs = segments.size()-1;
curr_lat = curr_LatLng.latitude;
curr_lng = curr_LatLng.longitude;
lat_A = list_segm_points.get(0).latitude;
lng_A = list_segm_points.get(0).longitude;
lat_B = list_segm_points.get(t_segs).latitude;
lng_B = list_segm_points.get(t_segs).longitude;
if (lat_A > lat_B ) {
lat_OK = curr_lat < lat_A && curr_lat > lat_B;
} else {
lat_OK = curr_lat > lat_A && curr_lat < lat_B;
}
if (lng_A > lng_B ) {
lng_OK = curr_lng < lng_A && curr_lng > lng_B;
} else {
lng_OK = curr_lng > lng_A && curr_lng < lng_B;
}
all_OK = lat_OK && lng_OK;
return all_OK;https://stackoverflow.com/questions/6664069
复制相似问题