7

iOSで地理的境界ボックスの計算を行いたいのですが。それは約である可能性があります。

入力パラメータ:

現在の場所(例:41.145495、-73.994901)

メートル単位の半径:(例:2000)

必要な出力:

MinLong :(例:41.9995495)

MinLat :(例:-74.004901)

MaxLong :(例:41.0005495)

MaxLat :(例:-73.004901)

要件: ネットワークコールなし

何か案は?Mapkit / CoreLocationはこのタイプのものを提供していないようですか?

他に使用できるGeographicSDKはありますか?

ありがとう

4

2 に答える 2

4

標準のMapKit関数MKCoordinateRegionMakeWithDistanceを使用できると思います。これにより、 MKCoordinateRegionが返されます。これは、実際にはちょうど中心点(lat、lon)であり、緯度と経度の方向のスパンを度単位で表したものです。緯度と経度からそれぞれスパンの半分を加算/減算すると、探している値が得られます。

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;

ちなみに、これは数キロメートルのオーダーの小さなスパンの経度を表すだけです。Appleを引用するには:

緯度
デルタスパンに使用する南北距離(度単位で測定)の量。緯度によって異なる縦方向の距離とは異なり、1度の緯度は常に約111キロメートル(69マイル)です。

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

于 2012-09-26T17:30:14.367 に答える
1

私はパーティーに少し遅れていることを知っていますが、私はちょうどGTBoundingBox役立つかもしれない(または役に立たないかもしれない)クラスを構築しました:

https://github.com/wpearse/ios-geotools

于 2013-06-20T22:55:29.407 に答える