Swift 中的 MKTileoverlay 问题
Posted
技术标签:
【中文标题】Swift 中的 MKTileoverlay 问题【英文标题】:MKTileoverlay issue in swift 【发布时间】:2015-02-22 16:44:14 【问题描述】:我是 ios 开发的新手,在使用 MapKit 时遇到了问题。
我正在尝试创建一个简单的应用程序来将光栅图像叠加到使用 mapkit 创建的地图上。
这是我的 tabViewcontroller 的代码:
import UIKit
import MapKit
class J_1_TabViewController: UIViewController,MKMapViewDelegate
@IBOutlet weak var CarteMapView: MKMapView!
override func viewDidLoad()
super.viewDidLoad()
// Localisation centre de Clermont-Ferrand pour centrer la carte
let location = CLLocationCoordinate2D(
latitude: 45.774792,
longitude: 3.091641
)
let span = MKCoordinateSpanMake(0.1, 0.1) // declaration du niveau d'affichage en X et Y en °
let region = MKCoordinateRegion(center: location, span: span) //declaration de la zone de la carte
self.CarteMapView.setRegion(region, animated: true)
//var template = "http://tile.openstreetmap.org/z/x/y.png" //declaration de l'adresse pour les tuiles
var template = "http://81.255.152.141/galineau/carteNO2/z/x/y.png"
let carte_indice = MKTileOverlay(URLTemplate:template)
self.CarteMapView.addOverlay(carte_indice)
还有我的 rendererForOverlay 的代码
func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer!
if overlay is MKTileOverlay
var carte_Renderer = MKTileOverlayRenderer(overlay: overlay)
carte_Renderer.alpha = 0.9
return carte_Renderer
return nil
在我的示例中,如果我使用 OpenStreetMap 链接,我的叠加层还可以,但如果我使用自己的图块,它就不再工作了。我已经使用 gdal 生成了我的图块,当我尝试在 safari 上将它们可视化时,似乎还可以。 这是可视化我的图块的链接:MyMap
我不明白为什么它们没有显示在我的应用中?
【问题讨论】:
你找到解决方案了吗?如果你解决了,你可以分享吗?我也卡在这里,在浏览器中查看完全可以,但不是它的应用程序:( 您找到解决方案了吗?即使我遇到同样的问题..!如果有关于 MKTileOverlay 的任何事情,请分享或发布答案 @JulienG:你找到解决这个问题的办法了吗? 【参考方案1】:如果您运行的是 iOS9,您可能会遇到 App Transport Security 问题,因为您的磁贴是通过不安全的 http 链接访问的,而 Apple 政策现在禁止访问任意 http 内容。
请参阅https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CocoaKeys.html NSAppSecurity 下的详细指南
您应该在 Info.plist 的 Exception Domains 中明确添加您的域。同时,仅出于测试目的,可以在 Info.plist 中插入以下键时禁用 App Transport Security
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key><true/>
</dict>
以上仅用于测试,对于任何商业应用,您应该在Exception Domains中列出通过http访问的不安全域。
关于 ATS 的一个很好的总结可以在这里找到http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/
【讨论】:
以上是关于Swift 中的 MKTileoverlay 问题的主要内容,如果未能解决你的问题,请参考以下文章
iOS 7 中的 MKTileOverlay 与 mbtiles 数据库
如何根据 NSMutableArray 中的特定 URL 动态创建 MKTileOverlay