1

MKMapViewを使用してコンポーネントに取り組んでいます。地図は、注釈タップで 2 倍にズームする必要があります。これを行うために、マップ リージョン スパンを 2 倍に縮小しようとしましたが、正しく動作しない場合があります。

    MKCoordinateSpan newSpan = mapView.region.span;
NSLog(@"old: %f, %f", newSpan.latitudeDelta, newSpan.longitudeDelta);
newSpan = MKCoordinateSpanMake(newSpan.latitudeDelta / 2.0, newSpan.longitudeDelta / 2.0);
NSLog(@"new: %f, %f", newSpan.latitudeDelta, newSpan.longitudeDelta);
MKCoordinateRegion region = [mapView regionThatFits:MKCoordinateRegionMake(centerCoordinate, newSpan)];

NSLog(@"!!!! (%f, %f) (%f, %f)", region.center.latitude, region.center.longitude, region.span.latitudeDelta, region.span.longitudeDelta);

現在のスパンを取得して縮小し、regionThatFits に渡します。時々結果は次のとおりです。

old: 0.609257, 0.914612
new: 0.304629, 0.457306
!!!! (55.805472, 37.579371) (0.608178, 0.914612)

regionThatFits doubles スパンが渡されます。したがって、視覚効果は、ズームなしでビューの注釈を中央に配置することです。

助言がありますか?

4

2 に答える 2

1

私は同じ問題を抱えていましたが、(アプリケーションのニーズに合わせて) mapView のサイズを変更していたことがありました。次に、高さが0のときにmapViewでregionThatFitsを使用していました。

FKDev の回答が示すように、regionThatFits は mapView の実際のフレーム (クラッシュの原因) に従ってスパンを再計算します。誰かを助けることができることを願っています。

于 2015-04-28T07:48:07.567 に答える
0

regionThatFits:ビュー フレームに合わせてスパン値を変更するために使用されるため、使用しないでください。アップルのドキュメントから:

マップの同じポイントを中心としているが、スパン値がマップ ビューのフレームに収まるように調整されている地域。

あなたの場合、マップ領域のスパン値を直接変更できます。

[mapView setRegion:MKCoordinateRegionMake(centerCoordinate, newSpan)];
于 2012-07-12T09:12:48.317 に答える