2012-02-01 18 views
7

私は自分のアプリケーションに表示したいものの限界を含むと判断した座標領域を持っています。私はこれをMKCoordinateRegionとして、中心点の緯度、経度、スパンを設定しました。現在のuserLocationが座標領域内にあるかどうかを確認するにはどうすればよいですか?現在のユーザーの場所がMKCoordinateRegionの内部にあるかどうかを確認するにはどうすればよいですか?

答えて

9

マップ矩形を使用します。次に、マップの現在の表示可能な矩形を使用した例を示します。あなたの質問に関しては、convertRegion:toRectToView:を使用して、まず地域をMKMapRectに変換することができます。

MKMapPoint userPoint = MKMapPointForCoordinate(mapView.userLocation.location.coordinate); 
MKMapRect mapRect = mapView.visibleMapRect; 
BOOL inside = MKMapRectContainsPoint(mapRect, userPoint); 
+0

ハ、あまり後で答えを得るのが面白い!ありがとう、いい答えですので、私は先に進み、あなたにマークを与えます - convertRegion:toRectToViewは、私が見逃していたものです。 –

0

面積がレイキャスティングアルゴリズムを使用してポリゴンで与えられた場合のポイントは、お住まいの地域内にあるかどうかを決定するための簡単な解決策があります:外であることが保証場所を使用する出発点として、ここでhttp://en.wikipedia.org/wiki/Point_in_polygon

を参照してください。あなたの地域、例えば(地理的な)北極。

+0

する必要があります! –

2
firstresponderの答えの

スウィフト3バージョン:

let userPoint = MKMapPointForCoordinate(mapView.userLocation.coordinate) 
let mapRect = mapView.visibleMapRect 
let inside = MKMapRectContainsPoint(mapRect, userPoint) 

ほとんど同じで。このAPIはSwift-ifiedされていません(Swift APIデザインガイドラインに準拠するように更新されていません)。それは本当に私は本当に私のために仕事をするだろうMapKitで何かを探していた...

let userPoint = mapView.userLocation.coordinate.mapPoint 
let inside = mapView.visibleMapRect.contains(userPoint) 
関連する問題