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

时间:2015-10-28 13:32:23

标签: mkmapview mkoverlay mktileoverlay

我正在使用MKTileOverlay在Apple地图上叠加旧地图。

叠加层平铺,覆盖面积约10平方英里。

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

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

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

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

我尝试过继承MKTileOverlay并捕获未找到URL但没有成功的情况。

有谁知道如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

感谢Apple Developer论坛上的用户: 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)); 
            }
        }
}