使用地图坐标确定点是否在矩形内

3
今天我的大脑不太灵光。我需要测试一个点(纬度,经度)是否在地图上的一个矩形内。该矩形由其北、东、南和西边界定义。问题在于所有点或值都在地图坐标系统中。为了处理日期线周围的包装,我假设如果我们从左到右移动,则经度始终处于“之间”。
bool PointInRectangle(Point pt, double North, double East, double South, double West)
{
    // ????
}

重复的,我认为。请参见https://dev59.com/umPVa4cB1Zd3GeqP-fBj - Jeppe Stig Nielsen
@Jeppe,看起来问题有些相似,但他们的要求有些不同(视觉地图,不需要100%准确)。我希望能得到一个小的代码片段。 - jklemmack
1个回答

4
假设东方和北方为正方向:
bool PointInRectangle(Point pt, double North, double East, double South, double West)
{
    // you may want to check that the point is a valid coordinate
    if (West < East)
    {
        return pt.X < East && pt.X > West && pt.Y < North && pt.Y > South;
    }

    // it crosses the date line
    return (pt.X < East || pt.X > West) && pt.Y < North && pt.Y > South;        
}

啊 - 原来如此简单,我之前漏掉了这个。 - jklemmack
除非我误解了问题,否则我认为你的日期线条件不起作用。假设“West”是170,“East”是-170,则唯一有效的经度范围为170到180和-180到-170。但是,经度165通过了“pt.X > East”的条件。我是否误解了? - ean5533
谢谢 - 我知道这是一个简单类型的答案!我已经花了30分钟来处理180、360和模逻辑,知道必须有更好的方法。 - jklemmack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接