Nền tảng nhanh về những gì tôi đang diễn ra. UIMapView tải và hiển thị một chú thích đơn (Không bao giờ nhiều hơn một chú thích). Trên thanh trình đơn, có một nút Xác định vị trí, trên tap userLocation được tìm thấy và hiển thị dưới dạng chú thích thứ hai. Tôi sau đó tôi có MapView thu nhỏ để phù hợp với cả hai chú thích trong phạm vi nhưng tôi không thể tìm thấy một cách thích hợp để làm như vậy. Tùy thuộc vào vị trí chú thích đầu tiên được đặt liên quan đến vị trí của người dùng, đôi khi nó không thu nhỏ đủ.Cách tốt nhất để thu nhỏ và phù hợp với tất cả chú thích trong MapKit
Ví dụ: nếu chú thích là Tây Bắc của Người dùng, nó sẽ thu nhỏ. Nhưng nếu chú thích là Đông Nam của Người dùng, nó chỉ thu nhỏ đủ để chúng bị cắt và bạn phải tự phóng to hơn một chút. Đây là mã tôi đang sử dụng, biến thể của một số người khác tôi đã tìm thấy trên 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];
Có cách nào tốt hơn được tích hợp vào MapKit để thu nhỏ để cả hai chú thích đều có cách nhau nửa inch giữa khung bên ngoài không? Tôi không thực sự quan tâm nếu người dùng phải phóng to sau, tôi chỉ muốn nó thu nhỏ một cách chính xác.
Hmm Tôi đã thử cái này tại một thời điểm và nó không hoạt động như mong đợi. Tôi đã có kết quả tương tự. Tôi sẽ cung cấp cho nó một shot nhanh chóng mặc dù và nhìn thấy một lần nữa. Tôi sẽ báo cáo lại. –
Ý của bạn là gì "như mong đợi?" Có vấn đề gì bạn đang có? –
Chỉ cần có nó được thực hiện và nó hoạt động tốt hơn so với những gì tôi đã có vì vậy tôi sẽ gắn bó với nó. Điều duy nhất bị cắt bỏ bây giờ là chú thích mà tôi có thể giải quyết bằng cách làm cho nó trở lại sau khi hoạt hình. Cảm ơn bạn đã giúp đỡ. –