2011-11-29 38 views

Trả lời

15

Có một tài sản trên quan điểm chú thích bạn có thể thay đổi, một khi vị trí người sử dụng đã được cập nhật:

+0

Đôi khi vị trí không thể xác định được và MKUserLocation chuyển sang màu xám. Chú thích vẫn đang được hiển thị trong trường hợp đó. Câu trả lời này không đúng. – Andy

+0

làm điều này một mình không làm việc cho tôi trên iOS 10. xử lý trong 'viewForAnnotation' hoạt động. –

12

Bạn có thể đặt title để trống để ngăn chặn các callout:

mapView.userLocation.title = @""; 


Edit:
Một cách đáng tin cậy hơn có thể là để trống tiêu đề trong phương pháp didUpdateUserLocation đại biểu:

-(void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation 
{ 
    userLocation.title = @""; 
} 

hoặc trong viewForAnnotation:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>) annotation 
{ 
    if ([annotation isKindOfClass:[MKUserLocation class]]) 
    { 
     ((MKUserLocation *)annotation).title = @""; 
     return nil; 
    } 

    ... 
} 

Đặt tiêu đề trong phương thức ủy quyền cho phép bạn chắc chắn bạn có một phiên bản userLocation thực sự để làm việc.

+0

Cảm ơn! Tôi biết tôi có thể thay đổi tiêu đề và phụ đề nhưng không biết đặt tiêu đề cho một chuỗi trống sẽ ngăn chặn nó. – charudatta

+0

Trả lời bởi @jowie là tốt hơn. Sử dụng phương pháp đó để thay thế. – Anna

+0

@ Anna không được nhưng chưa thành công - bất kỳ suy nghĩ nào về cách chặn bong bóng chú thích mặc định hoàn toàn (như trên và có, @jowie trả lời có thể tốt hơn) mà không chặn 'mapView: didSelectedAnnotationView: 'được gọi? –

0

Tôi có hai cách để giúp bạn:

  1. đàn áp trong mapViewDidFinishLoadingMap

    func mapViewDidFinishLoadingMap(_ mapView: MKMapView) { 
    mapView.showsUserLocation = true 
    //suppress the title 
    mapView.userLocation.title = "My Location" 
    //suppress other params 
    

    }

  2. đàn áp trong didUpdate

    func mapView(_ mapView: MKMapView, didUpdate userLocation: MKUserLocation) { 
        //suppress the title 
        mapView.userLocation.title = "My Location" 
        //suppress other params 
    } 
    
0

Swift 4

// MARK: - MKMapViewDelegate 

func mapViewDidFinishLoadingMap(_ mapView: MKMapView) { 
    if let userLocationView = mapView.view(for: mapView.userLocation) { 
     userLocationView.canShowCallout = false 
    } 
} 
Các vấn đề liên quan