我正在使用带有Xcode 6的MapKit,到目前为止我编写的所有内容都运行良好。我有一个文本字段,允许用户输入任何字符串来搜索Apple的地图。
然而,我遇到的一个问题是,当搜索结果作为地图上的引脚返回时,我希望缩放适合 ONLY 结果,不包括userLocation图标。
这是我到目前为止的代码。 (我看到类似的代码更新了添加行到 include userLocation,但是他们说的代码不应该包含userLocation与我已经非常相似......)
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];
}
}];
}
答案 0 :(得分: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];
顺便说一句,我认为你希望在之后完成遍历地图点的迭代,而不是在每一个之后。但是,这意味着您应该仔细检查以确保在执行此操作之前有一个或多个地图点。