2012-05-18 44 views
2

我的大脑今天不工作。我需要测试一个点(lat,long)是否位于地图上的一个矩形内。这个矩形由它的北,东,南,&西边界定义。呃逆是所有的点或值都在地图坐标系中。为了处理日期线环绕,我假设如果我们从左到右走,经度总是“在”之间。使用地图坐标确定点是否在矩形中

bool PointInRectangle(Point pt, double North, double East, double South, double West) 
{ 
    // ???? 
} 
+0

重复的,我想。见http://stackoverflow.com/questions/10632457/ –

+0

@Jeppe类似的问题,但他们的要求有点不同(视觉地图,并不需要100%准确)。我希望有一个小代码snippit。 – jklemmack

回答

3

假设东部和北部是积极的:

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;   
} 
+0

啊 - 那个简单的OR就是我所错过的。 – jklemmack

+0

除非我误解了这个问题,否则我认为你的日期线条件不起作用。假设“West”是170,“East”是-170,那么唯一有效的经度是170到180和-180到-170。然而,东经165经过了'pt.X>东部'的条件。我误解了吗? – ean5533

+0

@ ean5533:当然,杜。让我解决它。 –

相关问题