2013-12-18 80 views
1

我加入MKCircleView用戶註釋,像這樣:不能設置縮放級別上的MKMapView

- (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]; 

我已經改變了增量度到其它號碼,但沒有改變。 我該如何管理?

回答

2

您需要設置您的跨度。 所以設置你的跨度值在longitudeDelta & latitudeDelta

yourRegion.span.longitudeDelta = 0.004; // set required zoom value 
yourRegion.span.latitudeDelta = 0.004; // set required zoom value 
5

MKCoordinateRegionMakeWithDistance函數中的距離參數在(不是度數)。

此外,儀表指定了完整的寬度和高度,因此您必須使用圓的半徑值的兩倍。

所以它應該是:

MKCoordinateRegion viewRegion = 
    MKCoordinateRegionMakeWithDistance 
    (mapView.userLocation.coordinate, 6000, 6000); 


你也可以只設置地圖視圖的visibleMapRect到圓覆蓋的boundingMapRect,這樣你就不必再重複距離值:

mapView.visibleMapRect = _circle.boundingMapRect; 
+0

謝謝!這是幫助。但你能解釋一下爲什麼當我將該地區設置爲3000 3000時,我無法看到整個圓圈? –

+0

請參閱更新。優雅地, – Anna

+0

,謝謝! –

1

對於Google的縮放級別,我使用this category代替MKMapView

否則使用安娜的解決方案