我将MKCircleView
添加到用户注释中,如下所示:
- (void)mapView:(MKMapView *)mapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
if (!_MapCentered) {
**_circle = [MKCircle circleWithCenterCoordinate:userLocation.coordinate radius:3000];
[_map_view addOverlay:_circle];**
_MapCentered = YES;
}
}
它将触发一次,一旦用户位置被跟踪,它运行良好但是你可以看到圆形视图的直径是3000米。所以现在我希望缩放级别适合CircleView
,如此:
MKCoordinateRegion viewRegion = MKCoordinateRegionMakeWithDistance(mapView.userLocation.coordinate, 0.270, 0.270);
[_map_view setRegion:viewRegion animated:YES];
我已将delta度数更改为其他数字,但没有任何更改。 我怎么能管理这个?
答案 0 :(得分:5)
MKCoordinateRegionMakeWithDistance
函数中的距离参数为米(非度数)。
此外,仪表指定了整个宽度和高度,因此您必须使用圆的半径值的两倍。
所以它应该是:
MKCoordinateRegion viewRegion =
MKCoordinateRegionMakeWithDistance
(mapView.userLocation.coordinate, 6000, 6000);
您也可以将地图视图的visibleMapRect
设置为圆形叠加层的boundingMapRect
,这样您就不必重复距离值:
mapView.visibleMapRect = _circle.boundingMapRect;
答案 1 :(得分:2)
您需要设置范围。 所以在longitudeDelta&中设置你的跨度值latitudeDelta
yourRegion.span.longitudeDelta = 0.004; // set required zoom value
yourRegion.span.latitudeDelta = 0.004; // set required zoom value
答案 2 :(得分:1)
对于Google的缩放级别,我使用this category作为MKMapView
否则使用Anna的解决方案