マップビュー上のポイントの周りに円を描こうとしていますが、これは成功しましたが、望んでいた方法ではありません。CG の方法は常に画面サイズに対して相対的に描画することになり、基本的にはピクセルではなくメートル単位で描画したいと考えています。
誰でもこれを行った経験がありますか?
マップビュー上のポイントの周りに円を描こうとしていますが、これは成功しましたが、望んでいた方法ではありません。CG の方法は常に画面サイズに対して相対的に描画することになり、基本的にはピクセルではなくメートル単位で描画したいと考えています。
誰でもこれを行った経験がありますか?
上記のことを行った経験はありませんが、MKMapView クラスには、ピクセルを座標に、またはその逆に調整するための一連のメソッドがあり、円をマップ上の座標にマッピングするために使用できるはずです。
この関数は、中心点、円の半径 (メートル)、方位 (度) があれば、上記の関数で使用する円の直径上の点を見つけるのにも便利です。
-(CLLocation*) offsetLocation:(CLLocation*)startLocation:(double)offsetMeters:(double)bearing
{
double EARTH_MEAN_RADIUS_METERS = 6372796.99;
double lat2 = asin( sin(startLocation.coordinate.latitude) * cos(offsetMeters/EARTH_MEAN_RADIUS_METERS) + cos(startLocation.coordinate.latitude) * sin(offsetMeters/EARTH_MEAN_RADIUS_METERS) * cos(bearing) );
double lon2 = startLocation.coordinate.longitude + atan2( sin(bearing) * sin(offsetMeters/EARTH_MEAN_RADIUS_METERS) * cos(startLocation.coordinate.latitude), cos(offsetMeters/EARTH_MEAN_RADIUS_METERS) - sin(startLocation.coordinate.latitude) * sin(lat2));
CLLocation *tempLocation = [[CLLocation alloc] initWithLatitude:lat2 longitude:lon2];
return tempLocation;
}