7

从文档中MKRoadWidthAtZoomScale

在 iOS 6 及更高版本中,您不应使用此函数来检索道路宽度。

是否可以使用其他功能,或者这只是 iOS 6 中缺少的功能?

奇怪的是,如果您不应该使用该功能,那么该功能并未被弃用。

4

2 回答 2

3

我冒险猜测它没有被弃用,因为该功能将在某个时候重新添加。该函数在 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 缩放级别的值,并使用低于该值的常量值。

这是苹果地图在低和高变焦下的路线叠加。您可以看到替代路线没有考虑较大的道路宽度,但主要路线宽度是正确的。更改路线不会影响备选路线宽度。

在此处输入图像描述

于 2013-02-28T12:53:56.267 回答
0

从 iOS 7.1 开始,文档中不再有警告 MKRoadWidthAtZoomScale。它是MKOverlayRenderer.h在 iOS 7.0 中引入的。

于 2014-03-11T08:37:51.637 回答