Я пытаюсь нарисовать круг вокруг точки на карте, что я успешно сделал, но не совсем так, как хотел. Методы 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;
}