首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >查找给定位置(经度,经度)是否在两个坐标的路由范围内( BoundingBox -me)

查找给定位置(经度,经度)是否在两个坐标的路由范围内( BoundingBox -me)
EN

Stack Overflow用户
提问于 2011-07-12 20:21:41
回答 2查看 1.6K关注 0票数 1

我正在使用Route-Me项目开发一个iPhone应用程序。我正在使用一个名为'latitudeLongitudeBoundingBoxForScreen‘的方法,它返回一组两个坐标。在屏幕的经度/纬度定义东北角和西南角。这似乎工作得很好。

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

非常感谢您的帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-07-20 02:50:35

对于多边形中的一般点,Point Inclusion Test似乎假设一个平凡的等长方形投影(x = lon,y= lat)。

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

如果边界框跨过180英寸长的线,这将会中断。简单的解决方法是,如果横跨180长线的长方体在负经度上加上360度。这不是一个有效的导航点,但它使数学工作。

这在两极周围也不起作用。

票数 2
EN

Stack Overflow用户

发布于 2018-07-26 18:01:04

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

代码语言:javascript
复制
    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;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6664069

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档