来自MKRoadWidthAtZoomScale的文档:
You should not use this function to retrieve road widths in iOS 6 and later.
是否有其他功能可以替代使用,或者这只是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低地和高放大的地图路线叠加.您可以看到替代路线没有考虑更大的道路宽度,但主要路线宽度是现场.更改路线不会影响替代路线宽度.