2010-06-16 22 views
11

Tôi đang sử dụng bộ bản đồ và hiển thị vị trí của người dùng bằng cách sử dụng "showsUserLocation" Tôi đang sử dụng mã sau để thu phóng đến vị trí của người dùng, nhưng không thu phóng. vị trí người dùng trên bản đồ được thể hiện chính xác.iphone zoom đến vị trí của người dùng trên bản đồ

MKCoordinateRegion newRegion; 
MKUserLocation* usrLocation = mapView.userLocation; 
newRegion.center.latitude = usrLocation.location.coordinate.latitude; 
newRegion.center.longitude = usrLocation.location.coordinate.longitude; 
newRegion.span.latitudeDelta = 20.0; 
newRegion.span.longitudeDelta = 28.0; 
[self.mapView setRegion:newRegion animated:YES]; 

Tại sao vị trí của người dùng thể hiện một cách chính xác và không phóng to đúng cách. một số có thể đúng cho tôi xin vui lòng?

Trả lời

26

mapView.userLocation được đặt thành một vị trí ngoài khơi bờ biển Châu Phi (0,0) khi được khởi tạo lần đầu tiên. Kết quả là, tôi làm điều gì đó như sau, điều này khiến cho quá trình thu phóng xuất hiện khi chú thích xuất hiện. Tất nhiên, đây chỉ là một ví dụ:

- (void)mapView:(MKMapView *)mv didAddAnnotationViews:(NSArray *)views { 
    for(MKAnnotationView *annotationView in views) { 
     if(annotationView.annotation == mv.userLocation) { 
      MKCoordinateRegion region; 
      MKCoordinateSpan span; 

      span.latitudeDelta=0.1; 
      span.longitudeDelta=0.1; 

      CLLocationCoordinate2D location=mv.userLocation.coordinate; 

      region.span=span; 
      region.center=location; 

      [mv setRegion:region animated:TRUE]; 
      [mv regionThatFits:region]; 
     } 
    } 
} 
1

bạn đã xác nhận rằng vị trí được trả về bởi mapView.userLocation không phải là tại 0, 0?

+0

Nếu vị trí của người dùng bằng không, nó sẽ không hiển thị chính xác chú thích khớp với vị trí của tôi. – Satyam

+0

@satyam: với đồng bằng lat/lon như bạn mô tả, bạn sẽ có thể bao gồm Châu Phi trong thu phóng từ 0,0 không xa bờ biển. Bên cạnh đó, bạn không biết vị trí của người dùng ở đâu. –

3

bạn có thể thử:

mapView.userTrackingMode=YES; 
mapView.userTrackingMode=NO; 

UserTrackingMode sẽ phóng to để sử dụng Location.

+0

Điều này chuyển đến vị trí hiện tại, nhưng không thu phóng một cách duyên dáng. –

+0

Trong iOs 8.3, nó phóng to một cách duyên dáng. –

Các vấn đề liên quan