查找给定位置(lat, lon)是否在两个坐标(route-me)的BoundingBox内



我正在使用Route-Me项目开发一个iPhone应用程序。我正在使用一个名为"latitudeLongitudeBoundingBoxForScreen"的方法,它返回一组两个cooördinates。在屏幕的经纬度定义东北角和西南角。

我的问题是如何确定给定点(经度/纬度)是否在这两个坐标(东北,西南)的边界内?

事先非常感谢您的帮助

对于多边形中的一般点,点包含测试似乎可以假设一个平凡的等矩形投影(x = lon, y = lat)。

既然知道了东北角和西南角,就可以计算出西北角和东南角。此外,请记住,你的边界多边形(框)必须遵循缠绕约定(你不能在点包含测试中抛出点)。

如果边界框越过180行,则会断开。简单的解决方法是,如果横过180度的方框在负经度上加360。这不是一个有效的导航点,但它使数学工作。

我知道时间已经过去很久了,但也许还有人感兴趣。

    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;