Подтвердить что ты не робот

Как сделать масштабирование карты зрения до 5-мильного радиуса текущего местоположения

Я знаю, что это очень распространенная проблема, но я не получаю точного ответа на эту вещь.

Как сделать MKMapView по умолчанию масштабированием в радиусе 5 миль от текущего местоположения.

Спасибо заранее.

4b9b3361

Ответ 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