0

私が持っている範囲 (最大 x、最大 y、最小 x、最小 y 座標) が現在表示されているマップ ビューにあるかどうかを確認しようとしています。

エクステントを取得して作成します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べきだとわかっているときに決して含まれません。

を に置き換えるmapView.visibleMapRectMKMapRectWorld、エクステント「mapRect」が含まれます。

私は何か間違ったことをしていますか?mapView.visibleMapRect私が思っているもの(画面上の表示可能領域)ではありませんか?

4

2 に答える 2

0

mapView.visibleMapRectまさにあなたが考えているものであり、マップビューによって表示されるマップ長方形です。問題はおそらく、あるMKMapRectContainsRectマップ四角形が別の四角形に完全に含まれている (完全に囲まれている) 場合にのみ関数が通知することです。MKMapRectIntersectsRectマップの四角形の一部があなたのmapView.visibleMapRect

于 2013-08-21T16:47:56.290 に答える