約500メートルのMKCoordinateSpanを作成する必要があります。MKCoordinateSpan in Meters?
MKCoordinateSpanコンストラクタに渡す値を計算するにはどうすればよいですか?
プログラミング(Obj-C、.Net)言語での回答は問題ありません。
約500メートルのMKCoordinateSpanを作成する必要があります。MKCoordinateSpan in Meters?
MKCoordinateSpanコンストラクタに渡す値を計算するにはどうすればよいですか?
プログラミング(Obj-C、.Net)言語での回答は問題ありません。
別の方法としては、MapKitのを使用することです0機能:
MKCoordinateRegion rgn = MKCoordinateRegionMakeWithDistance(
CLLocationCoordinate2DMake(someLatitude, someLongitude), 500, 500);
MKCoordinateSpan
はrgn.span
になります。
public static void ZoomToCoordinateAndCenter (MKMapView mapView, CLLocationCoordinate2D coordinate, double meters, bool showUserLocationToo, bool animate)
{
if (!coordinate.IsValid())
return;
mapView.SetCenterCoordinate (coordinate, animate);
mapView.SetRegion (MKCoordinateRegion.FromDistance (coordinate, meters, meters), animate);
}
正確性が必要な場合を除き、近似を使用して簡単に行うことができます。第1の問題は、500メートルを表す緯度の割合を見つけることです。緯度の度合いはどの地点でも約111kmで一定であるため、簡単です。したがって500メートルは緯度.0045度です。
あなたがどこにいるかによって経度の長さが変わるので難しくなります。これは
アルファ、6378137キロは、B/Aが0.99664719(すべてのGPSデバイスによって使用中WGC84スフェロイドモデルの使用で一定)と PHI地球の赤道半径であるで近似することができます緯度の程度です。
緯度が37.783度のメルボルンには十分に幸運だと想像してください。南北はここでは関係ありません。ベータ版は37.6899となり、残りは88kmの長さになるように解決されています。したがって、500メートルは.0057度です。メルボルンのための
結果 - MKCoordinateSpan melbourne500MeterSpan = MKCoordinateSpanMake(.0045, .0057);
あなたの答えとあなたのコード経度のwiki articleが、この上の多くの詳細を持っているwith this online calculator
を確認することができます(そしてそれここでは画像のソース)
コード:
#define EARTH_EQUATORIAL_RADIUS (6378137.0)
#define WGS84_CONSTANT (0.99664719)
#define degreesToRadians(x) (M_PI * (x)/180.0)
// accepts decimal degrees. Convert from HMS first if that's what you have
double spanOfMetersAtDegreeLongitude(double degrees, double meters) {
double tanDegrees = tanf(degreesToRadians(degrees));
double beta = tanDegrees * WGS84_CONSTANT;
double lengthOfDegree = cos(atan(beta)) * EARTH_EQUATORIAL_RADIUS * M_PI/180.0;
double measuresInDegreeLength = lengthOfDegree/meters;
return 1.0/measuresInDegreeLength;
}
すごい:MonoTouchでは –
この答えを使用しないでください。ポイントを取得するのに満足しているので、MKCoordinateRegionMakeWithDistanceは正しい方法です。 –
-1です。 – sean
モノトックの解決策は何も問題ありません! –
+1、それは簡単な方法です - 私はそのことについて知らなかった! –
Google MonoTouchに私を強制するためにこれは本当に素晴らしい – Eugene