Как сделать масштабирование карты зрения до 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
Ответ 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