2016-02-11 76 views
1

我正在使用MKMapView。當用戶以某種方式滾動地圖時,指示用戶當前位置的藍點消失,點擊mapView上的按鈕將他帶回包含該藍點的部分。我正在通過設置如何知道藍點是否在我的mapView的可見部分內?

self.mapView.centerCoordinate = self.mapView.userLocation.coordinate; 

on按鈕的操作方法。 但是一旦他從藍點滾動,我必須改變按鈕的圖像。那麼,如何知道藍點是否不在用戶當前可見的地圖部分中。

回答

1

您可以將一個委託添加到地圖視圖mapView:regionDidChangeAnimated:,以便您在滾動事件發生時得到通知。

在實現該方法時,您可以獲取visibleMapRect並使用MKCoordinateRegionForMapRect獲取地圖視圖的關聯真實世界座標。然後,您可以確定當前的用戶位置是否可見(這需要簡單的計算,我不認爲有內置方法)。

+0

日Thnx了很多!有效。 – mars

+0

只是最後一個問題。我的藍點有時在選擇其他註釋時有時會變灰,有時還會點擊mapView。我怎樣才能保持它的藍色? – mars

+0

你實現了什麼委託方法(這實際上是一個新問題) – Wain

1

您可以使用內置的布爾標誌self.mapView.userLocationVisible

-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{ 
//do something here 
if(self.mapView.userLocationVisible){ 
    //Blue dot visible 
} 
else{ 
    //Blue dot hidden 
} 
//do something here 
} 
0

對於那些有興趣代碼:

-(void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated{ 
    if (MKMapRectContainsPoint(self.mapView.visibleMapRect, MKMapPointForCoordinate(self.mapView.userLocation.coordinate))) { 
     NSLog(@"blue dot visible"); 
    }else{ 
     NSLog(@"blue dot not visible"); 
    } 
} 
相關問題