Szybkie tło tego, co robię. UIMapView ładuje i pokazuje pojedynczą adnotację (Nigdy więcej niż jeden). Na pasku menu znajduje się przycisk Zlokalizuj mnie, po dotknięciu lokalizacji użytkownika znajduje się i wyświetla jako druga adnotacja. Następnie pomijam MapView, aby pasowały do obu adnotacji w zasięgu, ale nie jestem w stanie znaleźć odpowiedniego sposobu. W zależności od tego, gdzie umieszczana jest pierwsza adnotacja w stosunku do lokalizacji użytkownika, czasami nie jest ona wystarczająco pomniejszana.Jaki jest najlepszy sposób, aby pomniejszyć i dopasować wszystkie adnotacje w MapKit
Na przykład, jeśli adnotacja jest północno-zachodnia od użytkownika, powoduje pomniejszenie. Ale jeśli adnotacja znajduje się na południowym wschodzie użytkownika, powiększa się tylko tyle, że są one po prostu odcinane i trzeba ręcznie zmniejszyć nieco więcej. Oto kod, którego używam, odmiany niektórych innych, które znalazłem na SO.
CLLocation *whereIAm = mapView.userLocation.location;
float lat = whereIAm.coordinate.latitude;
float lon = whereIAm.coordinate.longitude;
CLLocationCoordinate2D southWest = {[currentLatitude floatValue], [currentLongitude floatValue]};
CLLocationCoordinate2D northEast = southWest;
southWest.latitude = MIN(southWest.latitude, lat);
southWest.longitude = MIN(southWest.longitude, lon);
northEast.latitude = MAX(northEast.latitude, lat);
northEast.longitude = MAX(northEast.longitude, lon);
CLLocation *locSouthWest = [[CLLocation alloc] initWithLatitude:southWest.latitude longitude:southWest.longitude];
CLLocation *locNorthEast = [[CLLocation alloc] initWithLatitude:northEast.latitude longitude:northEast.longitude];
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 = 7.0;
MKCoordinateRegion savedRegion = [mapView regionThatFits:region];
[mapView setRegion:savedRegion animated:YES];
[locSouthWest release];
[locNorthEast release];
Czy istnieje lepszy sposób wbudowane MapKit tylko pomniejszyć tak, że oba mają adnotacje, powiedzmy, pół cala pomiędzy nimi na zewnętrznej ramie? Nie dbam o to, czy użytkownik musi później powiększyć, chcę tylko, żeby pomniejszył obraz.
Hmm Próbowałem tego w jednym punkcie i nie działało tak, jak tego oczekiwałem. Miałem takie same wyniki. Zamierzam szybko zrobić zdjęcie i zobaczyć ponownie. Odpowiem z powrotem. –
Co masz na myśli mówiąc "zgodnie z oczekiwaniami?" Jakie masz problemy? –
Właśnie to zaimplementowałem i działa lepiej niż to, co miałem, więc się z tym uporam. Jedyną rzeczą, która zostanie odcięta, jest objaśnienie, które można rozwiązać, wykonując repop po animacji. Dzięki za pomoc. –