0

私のマップ ビューには、1 つの中心点で多くのピンポイントをカバーする 1 つの円が含まれています。ユーザーがボタンをクリックするたびに、円が表示されるようなレベルでマップをズームする必要があります。マップを多かれ少なかれズームしてはならず、正確な円を表示する必要があります。ユーザーがログアウトすると、次のログインで円に新しい半径が設定されます。適切なズーム レベルの計算方法。私のコード:

-(void)showCircle{

   //calculate new radius
    long radius=[self calculateRadius];
    MKCircle *circle= [[MKCircle alloc]init];

    circle = [MKCircle circleWithCenterCoordinate:CLLocationCoordinate2DMake([groupLat floatValue], [groupLon floatValue]) radius:radius];
    [myMapView addOverlay:circle];
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(CLLocationCoordinate2DMake([groupLat floatValue], [groupLon floatValue]), 800, 800);
    MKCoordinateSpan span;

    //calculate zoom level
    double radius=[circle radius]);
    double rad = radius + radius / 2;

    double scale = rad / 500;
    zoomLevel=(16 - log(scale) / log(2));

    region.span.latitudeDelta  =zoomLevel;
    region.span.longitudeDelta =zoomLevel;

    [myMapView setRegion:region animated:YES];
}

前もって感謝します!

4

1 に答える 1