MKTileoverlay问题在swift中

时间:2015-02-22 16:44:14

标签: ios swift mapkit mktileoverlay

我对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

我无法理解为什么他们没有在我的应用中展示?

1 个答案:

答案 0 :(得分:2)

如果您运行的是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>  

以上仅用于测试,对于任何商业应用程序,您应列出通过异常域中的http访问的不安全域。

可在此处找到有关ATS的详细摘要http://ste.vn/2015/06/10/configuring-app-transport-security-ios-9-osx-10-11/