Я ищу некоторую помощь с завершением некоторого кода при настройке области на MKMapView на основе текущей аннотации местоположения и аннотации, которую я установил.Установите область MKMapView в центр на две аннотации
Я хочу рассчитать расстояние между ними и установить центр между ними, а затем уменьшить масштаб, чтобы оба были в поле зрения. Кажется, он отлично работает в Simulator для меня, но, к сожалению, userLocation.coordinate установлен на Apple HQ. Когда я тестирую устройство, я вижу странное поведение. Часто он уменьшает масштаб и устанавливает правильную область, если две аннотации несколько горизонтальны на одной и той же широте, но если вертикальное расстояние больше, то оно не масштабируется должным образом.
Я использовал код нашел here, и отредактирован немного, чтобы соответствовать моим потребностям:
CLLocationCoordinate2D southWest = mapView.userLocation.coordinate;
CLLocationCoordinate2D northEast = southWest;
southWest.latitude = MIN(southWest.latitude, annotation.coordinate.latitude);
southWest.longitude = MIN(southWest.longitude, annotation.coordinate.longitude);
northEast.latitude = MAX(northEast.latitude, annotation.coordinate.latitude);
northEast.longitude = MAX(northEast.longitude, annotation.coordinate.longitude);
CLLocation *locSouthWest = [[CLLocation alloc] initWithLatitude:southWest.latitude longitude:southWest.longitude];
CLLocation *locNorthEast = [[CLLocation alloc] initWithLatitude:northEast.latitude longitude:northEast.longitude];
// This is a diag distance (if you wanted tighter you could do NE-NW or NE-SE)
CLLocationDistance meters = [locSouthWest distanceFromLocation:locNorthEast];
MKCoordinateRegion region;
region.center.latitude = (southWest.latitude + northEast.latitude)/2.0;
region.center.longitude = (southWest.longitude + northEast.longitude)/2.0;
region.span.latitudeDelta = meters/111319.5;
region.span.longitudeDelta = 0.0;
MKCoordinateRegion savedRegion = [mapView regionThatFits:region];
[mapView setRegion:savedRegion animated:YES];
[locSouthWest release];
[locNorthEast release];
Единственное, что меня смутило то, что он говорит northEast = southWest
...
Заранее спасибо всем, который получил некоторую помощь и вход :)
Отлично! Дельты были проблемой, которую я вижу. Спасибо! – runmad
К сожалению, эта страница, кажется, не отвечает. Кто-нибудь имеет кешированную версию страницы? Благодаря! – jowie
@jowie Мне удалось найти кешированную версию страницы, используя обратную машину. Надеюсь, это поможет. http://web.archive.org/web/20100612181520/http://codisllc.com/blog/zoom-mkmapview-to-fit-annotations – avelis