我正在使用MKMapView。當用戶以某種方式滾動地圖時,指示用戶當前位置的藍點消失,點擊mapView上的按鈕將他帶回包含該藍點的部分。我正在通過設置如何知道藍點是否在我的mapView的可見部分內?
self.mapView.centerCoordinate = self.mapView.userLocation.coordinate;
on按鈕的操作方法。 但是一旦他從藍點滾動,我必須改變按鈕的圖像。那麼,如何知道藍點是否不在用戶當前可見的地圖部分中。
我正在使用MKMapView。當用戶以某種方式滾動地圖時,指示用戶當前位置的藍點消失,點擊mapView上的按鈕將他帶回包含該藍點的部分。我正在通過設置如何知道藍點是否在我的mapView的可見部分內?
self.mapView.centerCoordinate = self.mapView.userLocation.coordinate;
on按鈕的操作方法。 但是一旦他從藍點滾動,我必須改變按鈕的圖像。那麼,如何知道藍點是否不在用戶當前可見的地圖部分中。
您可以將一個委託添加到地圖視圖mapView:regionDidChangeAnimated:
,以便您在滾動事件發生時得到通知。
在實現該方法時,您可以獲取visibleMapRect
並使用MKCoordinateRegionForMapRect
獲取地圖視圖的關聯真實世界座標。然後,您可以確定當前的用戶位置是否可見(這需要簡單的計算,我不認爲有內置方法)。
您可以使用內置的布爾標誌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
}
對於那些有興趣代碼:
-(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");
}
}
日Thnx了很多!有效。 – mars
只是最後一個問題。我的藍點有時在選擇其他註釋時有時會變灰,有時還會點擊mapView。我怎樣才能保持它的藍色? – mars
你實現了什麼委託方法(這實際上是一個新問題) – Wain