2012-05-18 46 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:當然,杜。讓我解決它。 –

相關問題