我正在开发一个项目(平台iOS 7),其中我需要当前位置与商店大约5公里,所以如何计算跨度/区域值以显示当前位置在地图上的所有商店。
MKMapRect zoomRect = MKMapRectNull;
double inset;
for (id <MKAnnotation> annotation in mapVW.annotations)
{
MKMapPoint annotationPoint = MKMapPointForCoordinate(annotation.coordinate);
MKMapRect pointRect = MKMapRectMake(annotationPoint.x, annotationPoint.y, 0.1, 0.1);
zoomRect = MKMapRectUnion(zoomRect, pointRect);
inset = -zoomRect.size.width * 20;
}
[mapVW setVisibleMapRect:MKMapRectInset(zoomRect, inset, inset) animated:YES];
这就是我正在尝试的
由于
答案 0 :(得分:3)
目前尚不清楚您的确切问题是什么,但以下内容可能有所帮助:
inset
的计算看起来不对。它将inset
(侧面填充)设置为整个缩放区域宽度的20倍。你可能想要的是将inset
设置为整个宽度的小分数。也许你的意思是0.20
而不是20.0
:
inset = -zoomRect.size.width * 0.20;
您也不需要在inset
循环中重复设置for
,因为它仅取决于最终的width
。在调用for
之前,您可以在setVisibleMapRect
循环后移动上述行。
didUpdateUserLocation
委托方法(或从其中调用)。确保showsUserLocation
为YES
且地图视图的delegate
已设置。
顺便说一句:iOS 7包含新方法showAnnotations:animated:
,它自动确定某些给定注释的边界矩形,并为您设置地图的可见区域。它不允许您像您一样指定自定义插入(虽然默认值不错)。所以不是上面的循环,你会这样做:
[mapVW showAnnotations:mapVW.annotations animated:YES];
答案 1 :(得分:2)
NSArray *anno_Arrr = mapview.annotations;
[mapview showAnnotations:anno_Arrr animated:YES];