1

bestregion.span.latitudeDeltaとの両方を決定するコードがありregion.span.longitudeDeltaます。左上と右下を見つけて、緯度座標と経度座標の差分を取ります。

私が抱えている問題は、レンダリングが実際に実行時に設定したものと異なることです:

region = self.regionThatFits(region)
self.setRegion(region, animated: true)

例として、最初にレンダリングしたい項目を選択して (たとえば、テーブルから) マップに切り替えると、マップ上のすべてのポイントを表示してから必要なポイントを選択する場合とは(視覚的に) 異なる結果が得られます。保つ。

さらに、マップ上のすべてのポイントをレンダリングし、いくつかを選択して選択したものをレンダリングし、次にフィルターを削除してすべてレンダリングすると、マップは開始時と同じではありません-すべてのポイントが表示されますが、小さくなります(最初のビューと比較すると、ズームアウトされているように見えます)。

デバッグ時に、両方のシナリオで同じスパン値が生成されることがわかりますが、レンダリングではそれらが無視されているようです。(英国で選択されたポイント)を使用したデバッグから:

  1. すべてのポイントをロード:

    region.span.latitudeDelta 7.439768

    region.span.longitudeDelta 11.0

  2. フィルター ポイント:

    region.span.latitudeDelta 1.25

    region.span.longitudeDelta 10.50477

  3. フィルタを削除:

    region.span.latitudeDelta 7.439768

    region.span.longitudeDelta 11.0

(viewDidLoad だけでなく) 再レンダリングする前に、マップを固定座標に再配置しようとしましたが、違いはありませんでした。

上記のシーケンスを実行するたびにマップがズームアウトし続けるわけではないことを強調したいと思います。一度ズームアウトするだけです。

私が見逃している明らかなステップはありますか?設定する必要がある非表示のブール値? 他の何か?

また、 regionThatFits からに変更してみました

regionToRender = MKCoordinateRegionMake(region.center, region.span)

そして、私も次のことを試しました:

func mapView(mapView: MKMapView, regionDidChangeAnimated animated: Bool) {
        self.mapView.region = mapView.region
}

私が何をしても、すでにマップ上にいるときに注釈フィルターを適用すると、実際のスパンが増加/倍増したように見えます (または、マップの端の周りに強制フレームがあるように見えます)。デバッグ出力がそうでないことを示しているにもかかわらず、ズームアウトされています...

以下は、異なるシナリオからの 2 つの画像です。どんなアドバイスでも大歓迎です。

ありがとう!

  1. 図 1 - テーブルにいる間にフィルターを適用し、マップに移動しました: ここに画像の説明を入力

  2. 図 2 - マップに移動してからフィルターを適用: ここに画像の説明を入力

4

1 に答える 1