1

MKOverlayView サブクラスで円を描いています。半径はメートル単位です。drawMapRect:zoomScale:inContext:で描画するために、どのようにメーターをポイントに(そのズームスケールで)変換しますか?

4

1 に答える 1

3

ヘッダーを参照してください:

ヘルパー:

 // Conversion between distances and projected coordinates
 MK_EXTERN CLLocationDistance MKMetersPerMapPointAtLatitude(CLLocationDegrees latitude) NS_AVAILABLE(NA, 4_0);
 MK_EXTERN double MKMapPointsPerMeterAtLatitude(CLLocationDegrees latitude) NS_AVAILABLE(NA, 4_0);

 MK_EXTERN CLLocationDistance MKMetersBetweenMapPoints(MKMapPoint a, MKMapPoint b) NS_AVAILABLE(NA, 4_0);

そして MKOverlayView から

 // Convert screen points relative to this view to absolute MKMapPoints
 - (CGPoint)pointForMapPoint:(MKMapPoint)mapPoint;
 - (MKMapPoint)mapPointForPoint:(CGPoint)point;

それで

double ppm = MKMapPointsPerMeterAtLatitude(centerCoordinate.latitude);
MKMapPoint mkptLeftmost = ptCenter.x -= ppm;
CGPoint ptLeftmost  = [self pointForMapPoint:mkptLeftmost];
于 2013-04-05T14:40:10.927 に答える