2013-08-21 91 views
0

我試圖查看某些範圍(max x,max y,min x,min y座標)是否在當前可見的地圖視圖中。從座標創建MKMapRect並使用mapView.visibleMapRect

我把我的程度,並創建一個MKMapRect

MKMapPoint upperLeft = MKMapPointForCoordinate(CLLocationCoordinate2DMake([boundary.extents.maxY floatValue], [boundary.extents.minY floatValue])); 
MKMapPoint lowerLeft = MKMapPointForCoordinate(CLLocationCoordinate2DMake([boundary.extents.minY floatValue], [boundary.extents.minY floatValue])); 
MKMapPoint upperRight = MKMapPointForCoordinate(CLLocationCoordinate2DMake([boundary.extents.maxY floatValue], [boundary.extents.maxY floatValue])); 

MKMapRect mapRect = MKMapRectMake(upperLeft.x, upperLeft.y, fabs(upperLeft.x - upperRight.x), fabs(upperLeft.y - lowerLeft.y)); 

現在我想檢查我的「mapRect」是mapView.visibleMapRect:

if (MKMapRectContainsRect(mapView.visibleMapRect, mapRect)) { 
    // do some stuff 
} 

但我的程度絕不會包含當我知道他們應該是的時候通過mapView.visibleMapRect

如果我用MKMapRectWorld替換mapView.visibleMapRect,那麼它將包含我的擴展盤區'mapRect'。

我做錯了什麼?是mapView.visibleMapRect不是我認爲的(屏幕上的可視區域)?

回答

0

mapView.visibleMapRect正是你想象的那樣,地圖矩形顯示在你的地圖視圖中。問題可能是MKMapRectContainsRect函數只會告訴你,如果一個map rect完全被包含(完全封閉)在另一箇中。很可能你只是想用MKMapRectIntersectsRect這只是告訴你,你的地圖矩形的一部分是在你的mapView.visibleMapRect

+0

我的mapRect完全包含在'mapView.visibleMapRect'中。當我用worldMapRect替換可見區域時,它在可見區域。 – Padin215

1

D'oh!

問題是我用minY代替minX。

MKMapPoint upperLeft = MKMapPointForCoordinate(CLLocationCoordinate2DMake([boundary.extents.maxY floatValue], [boundary.extents.**minX** floatValue])); 
MKMapPoint lowerLeft = MKMapPointForCoordinate(CLLocationCoordinate2DMake([boundary.extents.minY floatValue], [boundary.extents.**minX** floatValue])); 
MKMapPoint upperRight = MKMapPointForCoordinate(CLLocationCoordinate2DMake([boundary.extents.maxY floatValue], [boundary.extents.**maxX** floatValue]));