2011-10-10 21 views
3

マップを移動して現在のユーザーの位置に移動する方法があります。これは正常に動作しますが、現在のところズームスケールは私が望むように動作しません。私は、ユーザーがマップをズームアウトまたはズームインできるようにしたいと思います。マップ上でユーザーが設定した新しいズームスケールで現在の位置に従います。MKMapView:現在のズームレベルを現在の位置に従います

私は、次の操作を実行しようとしたが、それはうまく動作しません:

/** 
* Centers the map on the current location 
* 
* @version $Revision: 0.1 
*/ 
- (void)centerMapOnLocation:(CLLocation *)location { 

    // Make a region using our current zoom level 
    CLLocationDistance latitude = mapView.region.span.latitudeDelta*100; 
    CLLocationDistance longitude = mapView.region.span.longitudeDelta*100; 
    MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance(location.coordinate, latitude, longitude); 
    [mapView setRegion:region animated:YES]; 
}//end 

答えて

5

MKMapView Zoom and Regionは、現在のビューウィンドウを取得する方法について説明します。

あなたは、あなたのサイズを指定することができますコンストラクタを使用して、新しいビューを設定するには、新しいMKCoordinateRegionを作成している:

UIKIT_STATIC_INLINE MKCoordinateRegion MKCoordinateRegionMake(
    CLLocationCoordinate2D centerCoordinate, 
    MKCoordinateSpan span 
); 

あなたは現在の領域からspanに合格したいと思うがユーザーの場所からcenterCoordinateを入手してください。既に入手済みです。

+0

あなたは何を意味するのかよく分かりません。私はmapView.region.spanからスパンを得ることができるので、新しいマップを作る必要はありません。 –

+1

正確に。ただし、現在のユーザーの場所に移動する場合は、mapViewをに設定するために新しいMKCoordinateRegionを作成する必要があります。しかし、MKCoordinateRegionMakeWithDistanceでそれを作成すると、スパンはデフォルト値にリセットされます。その代わりに、MKCoordinateRegionMakeで作成し、* current * spanに渡して、スパンが変更されないようにします。 – bdares

+0

ああ、MKCoordinateRegionMakeWithDistanceではなくMKCoordinateRegionMakeを使用する必要がありました。ありがとう! –

関連する問題