我为地图操作自己的 tileserver。该服务器可通过带有自签名证书的 HTTPS 访问。有没有机会使用 MKTileOverlay
static NSString * const template = @"https://tile.myserverwithselfsignedcertificate.org/{z}/{x}/{y}.png";
MKTileOverlay *overlay = [[MKTileOverlay alloc] initWithURLTemplate:template];
overlay.canReplaceMapContent = YES;
[self.mapView addOverlay:overlay
level:MKOverlayLevelAboveLabels];
带有自签名证书。不幸的是,我在 XCode 日志窗口中收到证书无效的错误消息。
对于直接 NSURLConnection 请求,我可以使用此处描述的解决方案,例如:http: //www.cocoanetics.com/2010/12/nsurlconnection-with-self-signed-certificates/
但这不适用于我自定义的 MKTileOverlay 类。
有人知道这是否可能吗?
编辑 2015 年 8 月 21 日
我相信我必须将 MKTileOverlay 覆盖为以下内容:
- (void)loadTileAtPath:(MKTileOverlayPath)path result:(void (^)(NSData *data, NSError *error))result
{
NSURLRequest *request = [NSURLRequest requestWithURL:[self URLForTilePath:path]
cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:20];
connectionApi = [[NSURLConnection alloc] initWithRequest:request delegate:self startImmediately:YES];
}
- (void)connection:(NSURLConnection *)conn didReceiveData:(NSData *)data
{
[myData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)conn
{
// myData includes now the required tile,
// but how to pass it back to the result
// block of the loadTileAtPath method???
}
有谁知道如何解决这个问题?