2015-08-09 3 views
1

Мое приложение отлично работает на iOS 8, но когда я попытался построить его на Xcode 7, карта не отображается. Я попробовал это на симуляторе и реальном устройстве.iOS 9 MKTileOverlay не работает

Ниже приведен код.

- (void)viewDidLoad { 
 
    [super viewDidLoad]; 
 
    
 
    NSString *url = [[NSUserDefaults standardUserDefaults] 
 
          stringForKey:@"tileOverlayURL"]; 
 
    MKTileOverlay *overlay = [[MKTileOverlay alloc] initWithURLTemplate:url]; 
 
    overlay.canReplaceMapContent = YES; 
 
    [self.mapView addOverlay:overlay level:MKOverlayLevelAboveLabels]; 
 
} 
 

 
#pragma mark - MKMapViewDelegate 
 

 
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView 
 
      rendererForOverlay:(id <MKOverlay>)overlay 
 
{ 
 
    if ([overlay isKindOfClass:[MKTileOverlay class]]) { 
 
     return [[MKTileOverlayRenderer alloc] initWithTileOverlay:overlay]; 
 
    } 
 
    
 
    return nil; 
 
}

ответ

1

У меня была та же проблема. IOS 9 по умолчанию не позволяет подключаться к не защищенным URL-адресам. Серверы карт, которые я использовал, не были защищены, поэтому IOS 9 помешало NSURLRequest, чтобы мой код вызывался в MkTileOverlay, разговаривая с серверами карт.

Вы можете сообщить IOS 9, чтобы разрешить доступ к этим незащищенным серверам. Вы должны добавить раздел NSAppTransportSecurity в файл info.plist вашего проекта IOS и указать NSExceptionDomain для каждого небезопасного сервера карт, с которым вы разговариваете. Вот пример, показывающий 2 сервера карт, которые я использую.

<key>NSAppTransportSecurity</key> 
<dict> 
    <key>NSExceptionDomains</key> 
    <dict> 
     <key>nationalmap.gov</key> 
     <dict> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
     </dict> 
     <key>opencyclemap.org</key> 
     <dict> 
      <key>NSExceptionAllowsInsecureHTTPLoads</key> 
      <true/> 
      <key>NSIncludesSubdomains</key> 
      <true/> 
     </dict> 
    </dict> 
</dict> 
0

У меня была такая же проблема с загрузкой плитки в персонализированного наложения. Моя проблема заключалась в том, что я использовал «http» запросы вместо «https». Запросы с «http» считаются небезопасными на iOS9 и блокируются по умолчанию. Это может быть проблемой.

Смежные вопросы