Как сделать масштабирование карты зрения до 5-мильного радиуса текущего местоположения
Я знаю, что это очень распространенная проблема, но я не получаю точного ответа на эту вещь.
Как сделать MKMapView по умолчанию масштабированием в радиусе 5 миль от текущего местоположения.
Спасибо заранее.
Ответы
Ответ 1
Используйте следующий код, когда вы хотите увеличить масштаб до 5 миль:
double miles = 5.0;
double scalingFactor = ABS( (cos(2 * M_PI * newLocation.coordinate.latitude / 360.0) ));
MKCoordinateSpan span;
span.latitudeDelta = miles/69.0;
span.longitudeDelta = miles/(scalingFactor * 69.0);
MKCoordinateRegion region;
region.span = span;
region.center = newLocation.coordinate;
[mapView setRegion:region animated:YES];
Ответ 2
Используйте функцию MKCoordinateRegionMakeWithDistance
из MapKit.
Используйте функцию преобразования для преобразования миль в счетчики, так как MapKit использует счетчики.
float MilesToMeters(float miles) {
// 1 mile is 1609.344 meters
// source: http://www.google.com/search?q=1+mile+in+meters
return 1609.344f * miles;
}
Затем в вашем коде установите область карты как (благодаря @DylanBettermann за указание, чтобы получить радиус 5 миль, расстояние должно быть удвоено)
mapView.region = MKCoordinateRegionMakeWithDistance(
centerCoordinate,
MilesToMeters(10.0f),
MilesToMeters(10.0f)
);
Ответ 3
[self.theMapView setRegion:MKCoordinateRegionMake(
[theConsumer.latLong.clLocation coordinate],
MKCoordinateSpanMake( MAP_SPAN, MAP_SPAN ))
animated:YES];
Параметры MKCoordinateSpanMake
находятся в градусах, а 1 градус - около 69 миль на экваторе. Таким образом, MAP_SPAN будет 5.0/69.0