2015-02-17 58 views
1

我在Xcode 6中使用MapKit,並且我編碼到此爲止的所有內容都工作正常。我有一個文本字段,允許用戶輸入任何字符串來搜索Apple的地圖。在MapKit搜索中排除userLocation

但是,我遇到的問題之一是,當搜索結果在地圖上針回來,我想縮放以適應ONLY結果,不包括用戶位置圖標。

這是我到目前爲止的代碼。 (我也有類似的代碼添加幾行的更新包括的用戶位置,但是他們說,不應該包含用戶位置的代碼非常相似,我已經...)

 if (response.mapItems.count == 0) 
      NSLog(@"No results"); 
     else 
      for (MKMapItem *item in response.mapItems) 
      { 


       MKMapRect mr = [self.mapView visibleMapRect]; 
       MKMapPoint pt = MKMapPointForCoordinate([annotation coordinate]); 
       mr.origin.x = pt.x - mr.size.width *0.5; // 0.5 
       mr.origin.y = pt.y - mr.size.width * 0.75; //0.75 
       [self.mapView setVisibleMapRect:mr animated:YES]; 

       MKMapRect zoomRect = MKMapRectNull; 
       for (id <MKAnnotation> annotation in _mapView.annotations) 
       { 
        MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate); 
        MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 10.4, 10.4); 
        zoomRect = MKMapRectUnion(zoomRect, pointRect); 
       } 
       [_mapView setVisibleMapRect:zoomRect animated:YES]; 
      } 
    }]; 
} 

回答

1

只是檢查確保註釋不是MKUserLocation對象:

MKMapRect zoomRect = MKMapRectNull; 
for (id <MKAnnotation> annotation in _mapView.annotations) { 
    if (![annotation isKindOfClass:[MKUserLocation class]]) { 
     MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate); 
     MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 10.4, 10.4); 
     zoomRect = MKMapRectUnion(zoomRect, pointRect); 
    } 
} 
[_mapView setVisibleMapRect:zoomRect animated:YES]; 

順便說一句,我想你想你完成通過地圖迭代點這個,而不是之後的每一個。儘管如此,這意味着在做這件事之前你應該仔細檢查以確保你有一個或多個地圖點。

+0

謝謝你的幫助! – 2015-02-18 01:19:23