のドキュメントからMKRoadWidthAtZoomScale
:
iOS 6 以降では、この関数を使用して道路幅を取得しないでください。
代わりに使用できる別の機能はありますか、それとも iOS 6 に機能がないだけですか?
使用すべきでない場合、関数が非推奨にならなかったのは奇妙です。
機能はある時点で再び追加されるため、非推奨ではなかったと思います。この関数は iOS 6 でも機能します。出力が役に立たなくても、呼び出されたときにクラッシュが発生しないためです。
(Apple) マップ アプリを見ると、経路を拡大すると、経路の幅が最高のズーム レベルで増加することがわかります。これらの高いズーム レベルでは、道路の幅も増加します。明らかに、Apple には、ズームしたときに道路がどのくらい広くなるかを知るための内部的な方法があります。一般リリースに向けて十分にテストされていない可能性があります。
この機能をまだ使用できると考えている人がいる場合に備えて、完全にズームイン (MKZoomScale = 1) してズームアウトしたときの道路幅の推奨値を次に示します。
コード:
for (float zoomScale=1; zoomScale>0.00001; zoomScale /= 2) {
NSLog(@"zoomScale: %f Road Width: %f", zoomScale, MKRoadWidthAtZoomScale(zoomScale));
}
結果:
zoomScale: 1.000000 Road Width: 21.000000
zoomScale: 0.500000 Road Width: 32.000000
zoomScale: 0.250000 Road Width: 60.000000
zoomScale: 0.125000 Road Width: 96.000000
zoomScale: 0.062500 Road Width: 176.000000
zoomScale: 0.031250 Road Width: 288.000000
zoomScale: 0.015625 Road Width: 448.000000
zoomScale: 0.007812 Road Width: 768.000000
zoomScale: 0.003906 Road Width: 1536.000000
zoomScale: 0.001953 Road Width: 2048.000000
...
置換関数については、最高の 2 または 3 のズーム レベルで適切に機能する値をいくつか作成し、それより下の定数値を使用することをお勧めします。
これは、低ズームと高ズームでの Apple マップのルート オーバーレイです。代替ルートは広い道路幅を考慮していないことがわかりますが、メイン ルートの幅はぴったりです。ルートを変更しても、代替ルートの幅には影響しません。