2012-09-17 17 views
5

iOSで地理的境界ボックスの計算をしたいと思います。 これはaproxでもかまいません。iOSの地理境界線の計算方法は?

入力パラメータ:

現在の場所(例:41.145495、-73.994901)メートルで

半径:(例:2000)

必要な出力:

MinLong :(例:41.9995495)

MinLat:(例:-74.004901)

MAXLONG:(例:41.0005495)

MAXLAT:(例:-73.004901)

要件: いいえネットワークコール

任意のアイデア? Mapkit/CoreLocationはこのタイプのものを提供していないようですか?

他のGeographic SDKを使用できますか?

おかげ

答えて

4

私はあなたが標準MapKit機能を使用することができると思う:MKCoordinateRegionMakeWithDistance、これは実際には中心点(緯度、経度)で、度でlatitudalとlongitudal方向にスパンされ、MKCoordinateRegionを返します。それぞれ緯度と経度からスパンの半分を加算/減算し、あなたが探している値を持っています。

CLLocationCoordinate2D centerCoord = CLLocationCoordinate2DMake(41.145495, −73.994901); 
MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(centerCoord, 2000, 2000); 

double latMin = region.center.latitude - .5 * startRegion.span.latitudeDelta; 
double latMax = region.center.latitude + .5 * startRegion.span.latitudeDelta; 
double lonMin = region.center.longitude - .5 * startRegion.span.longitudeDelta; 
double lonMax = region.center.longitude + .5 * startRegion.span.longitudeDelta; 

ところで、これは、数キロメートルのオーダーの小さなスパンの経度の代表です。 quote Appleへ:

latitudeDelta
(度で測定)北から南距離の量スパンに使用します。緯度に基づいて異なる縦距離とは異なり、1度の緯度は常に約111キロ(69マイル)です。

longitudeDelta
(度で測定)東から西への距離の量は、スパンに使用します。経度の範囲にまたがるキロメートルの数は、現在の緯度によって異なります。たとえば、1度の経度は赤道で約111キロ(69マイル)の距離にありますが、極では0キロメートルに収縮します。

+0

あなたのビューポートの重複これはやや問題があります0経度マーク –

+1

上記の計算でstartRegionの値は何ですか? –

+0

@JamesBillinghamまたは±180経度±90緯度記号 – wyu

関連する問題