5

私は持っていてMKMapView、マップカメラの見出しを回転させて、ユーザーの見出しをたどろうとしています。自動追跡は、同時に制御したいズームレベルを強制するため、実行したくありません。

問題は、354 ~ 6 度の値を指定すると、カメラの向きが 0 に戻ることを発見したことです。たとえば、カメラの向きを 2 に設定すると、電話を別の向きに向けるまで、常に 2 と 0 の間を行き来します。

私の解決策は、この範囲の間にある場合は 0 にロックすることですが、これは最適ではありません。なぜこれが起こるのかについて誰かが情報を持っていますか? 見出しの変更時に呼び出されるメソッドは次のようになります。

- (void)setMapCameraPosition {
    //354,6
    if (self.heading <= 6 || self.heading >= 354) {
        NSLog(@"****nulling heading. self.heading: %d camera.heading: %f", self.heading, self.mapView.camera.heading);
        self.mapView.camera.heading = 0.0f;
    }
    else {
        NSLog(@"changing heading. self.heading: %d camera.heading: %f", self.heading, self.mapView.camera.heading);
        self.mapView.camera.heading = (double)self.heading;
    }
}

if ステートメントがなく、カメラを自分の方向に設定しただけの場合、出力は次のようになります。

self.heading: 357 camera.heading: -0.000000
self.heading: 357 camera.heading: -0.000000
self.heading: 357 camera.heading: -0.000000

したがって、北に近い値を指定すると、その後一瞬で自動的に北に戻り、マップが永遠にジャンプするようになります。

マップが目的の方向を削除せずに、北に近い角度に方向を設定するにはどうすればよいですか?

4

1 に答える 1

5

現時点では、この問題は修正できないようです。私もこの問題に遭遇しました。Apple のテクニカル サポートを利用する必要があると思います。申し訳ありませんが、現在の SDK では、これは現時点では不可能です。また、マップ アプリケーションも同じ動作をします。

テスト中に、スナップが7度未満および353度を超えると発生することがわかりました。スライダーを使用してMKMapCamera、分離されたアプリで見出し機能をテストし、再現可能な問題を作成しました。

したがって、あなたのソリューションは今のところ最適です。ただし、ゼロだけでなく、353 度と 7 度にもスナップします。

float heading = self.heading;

if( roundf( heading ) >= round( 353.0f  ) && roundf( heading ) < round( 356.5f  ) ) {
    heading = 353.0f;
} else if( roundf( heading ) >= round( 356.5f  ) && roundf( heading ) <= round( 360.0f  ) )  {
    heading = 360.0f;
} else if( roundf( heading ) >= round( 0.0f  ) && roundf( heading ) < round( 3.5f  ) )  {
    heading = 0.0f;
} else if( roundf( heading ) >= round( 3.5f  ) && roundf( heading ) <= round( 7.0f  ) )  {
    heading = 7.0f;
}

[[[self mapview] camera] setHeading: heading];

しかし、それは完全にあなた次第です。

于 2014-11-05T11:13:38.127 に答える