从文档中MKRoadWidthAtZoomScale
:
在 iOS 6 及更高版本中,您不应使用此函数来检索道路宽度。
是否可以使用其他功能,或者这只是 iOS 6 中缺少的功能?
奇怪的是,如果您不应该使用该功能,那么该功能并未被弃用。
我冒险猜测它没有被弃用,因为该功能将在某个时候重新添加。该函数在 iOS 6 中仍然有效,因为它在调用时不会导致崩溃,即使输出没有用。
如果您查看 (Apple) Maps 应用程序,您会发现当您放大方向路径时,路径的宽度会在最高缩放级别增加。在这些高缩放级别下,道路的宽度也会增加。显然,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 缩放级别的值,并使用低于该值的常量值。
这是苹果地图在低和高变焦下的路线叠加。您可以看到替代路线没有考虑较大的道路宽度,但主要路线宽度是正确的。更改路线不会影响备选路线宽度。
从 iOS 7.1 开始,文档中不再有警告 MKRoadWidthAtZoomScale
。它是MKOverlayRenderer.h
在 iOS 7.0 中引入的。