MKTileOverlay - “在此服务器上找不到请求的 URL。”

Posted

技术标签:

【中文标题】MKTileOverlay - “在此服务器上找不到请求的 URL。”【英文标题】:MKTileOverlay - "The requested URL was not found on this server." 【发布时间】:2015-10-28 13:32:22 【问题描述】:

我正在使用 MKTileOverlay 将旧地图覆盖在 Apple 地图之上。

覆盖是平铺的,覆盖了大约 10 平方英里的区域。

所有似乎都可以正常工作,因为叠加层可以正确呈现。

但是,渲染器似乎正在尝试为视图中的整个区域加载叠加图块,即使拼图图像文件不存在,因为它们位于叠加图区域之外。

这会导致记录错误消息流。

Error Domain=NSURLErrorDomain Code=-1100 
"The requested URL was not found on this server." 

我已经尝试子类化 MKTileOverlay 并捕获未找到 URL 但没有成功的情况。

有人知道怎么解决吗?

【问题讨论】:

【参考方案1】:

感谢用户:Apple 开发者论坛上的 junkpile,需要子类化 MKTileOverlay 以将 boundingMapRect 限制为所需的大小。

import MapKit
class CustomTileOverlay : MKTileOverlay 

        override var boundingMapRect: MKMapRect 
            get 
               //North-East Corner of overlay region
                let lat1 = 53.46075
                let long1 = -1.92618
               //South-West Corner of overlay region
                let lat2 = 53.43018
                let long2 = -1.992885

                //Convert to Coordinates
                let coord1 = CLLocationCoordinate2DMake(lat1,long1)
                let coord2 = CLLocationCoordinate2DMake(lat2,long2)

                //Convert to map points
                let p1 = MKMapPointForCoordinate (coord1);
                let p2 = MKMapPointForCoordinate (coord2);

                //Return the MKMapRect
               return MKMapRectMake(fmin(p1.x,p2.x), fmin(p1.y,p2.y), fabs(p1.x-p2.x), fabs(p1.y-p2.y)); 
            
        

【讨论】:

以上是关于MKTileOverlay - “在此服务器上找不到请求的 URL。”的主要内容,如果未能解决你的问题,请参考以下文章

iOS 13.2 MKTileOverlay 偶尔不会渲染

子类化 MKTileOverlay 的困难

将 MKTileOverlay 与 MKPolyLine 一起使用

MKTileOverlay - 添加捆绑瓷砖

带有 MTiles 数据库的 MKTileOverlay

MKTileOverlay 未定义