2012-01-10 10 views
0

コードでIPadアプリケーションのMapKitマップを再訪したいと思います。これは、地図を元のズームレベルで指定された中心にパンすることです。ズームイン、ズームアウト、パンなし。ここでRecenter MapKit map

は、私が何をすべきかです:それは作品

- (void)panToLatitude:(double)lat andLongitude: (double) lon sender: (id)  sender 
{ 
CLLocationCoordinate2D zoomLocation; 
zoomLocation.latitude = lat; 
zoomLocation.longitude = lon; 

MKCoordinateRegion viewRegion = MKCoordinateRegionMake(zoomLocation, [self.map region].span); 

MKCoordinateRegion adjustedRegion = [self.map regionThatFits:viewRegion];     

[self.map setRegion:adjustedRegion animated:YES]; 
} 

、時には(時間の20から30パーセント)、それはズームアウト、ズームレベルを変更します。私はこれを望んでいない、ちょうど地図をrecenter。

アイデア?それは正確メルカトル図法を使用して、地図の領域を表示していると

おかげ

答えて

1

地図ビューが正しく動作しています。赤道に近づくにつれて経度の2つの子午線間の距離が大きくなります。パンしている場所に応じて、マップビューはズームレベルを調整して、指定した領域に合わせて調整する必要があります。

ソリューションの場合、Troy Brantが作成したMKMapViewでこのカテゴリをチェックします。これは、一貫したズームスケールを維持しながら、マップビューの位置を変更することができますし、あなたのためのすべての不気味な数学のものです。

http://troybrant.net/blog/2010/01/set-the-zoom-level-of-an-mkmapview/

+0

私の更新された回答を参照してください。私はこのカテゴリを私のプロジェクトの1つに使用しており、うまくいきました。 –

+0

おかげさまで、ありがとう。地図の現在のズームレベルをどのように取得しますか? – Tom

+0

ズームレベルは、クラスによって利用される任意の単位の種類です。 'MKMapView'は' zoomLevel'と似たものを公開しません。 –