MKRoadWidthAtZoomScale的文档中:



是否可以替代使用另一个功能,或者这只是iOS 6中缺少的功能?

奇怪的是,如果您不应该使用该功能,则该功能没有被弃用。

最佳答案

我可能会猜测它并未被弃用,因为该功能会在某个时候重新添加。该功能仍可在iOS 6中使用,因为即使输出无用,调用该功能也不会导致崩溃。

如果您查看(Apple) map 应用程序,则可以看到在放大方向路径时,路径的宽度在最高缩放级别时会增加。在那些高缩放级别下,道路的宽度也会增加。显然,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 map 路线叠加图。您会看到替代路线未考虑较大的道路宽度,但主要路线宽度已确定。更改路线不会影响替代路线的宽度。

10-04 19:48