我正在开发适用于iOS 7的应用程序,并试图将 map 从白天更改为夜间,并将夜间更改为白天模式。我没有在iOS 7文档中找到任何相关的API来执行此操作。

最佳答案

这不是MKMapKit的内置功能,因此,如果您自己做的话,您所要询问的内容是不可能的。如果您要自己进行操作,则最好的办法是找到“夜间模式”图块的 map 图块源,并使用MKTileOverlay类(iOS 7的新增功能)完全替换 map 的内容。

使用“开放街道 map ”图块源的简短代码示例(不是夜间图块!)

// Put this in your -viewDidLoad method
NSString *template = @"http://tile.openstreetmap.org/{z}/{x}/{y}.png";
MKTileOverlay *overlay = [[MKTileOverlay alloc] initWithURLTemplate:template];

//This is the important bit, it tells your map to replace ALL the content, not just overlay the tiles.
overlay.canReplaceMapContent = YES;
[self.mapView addOverlay:overlay level:MKOverlayLevelAboveLabels];

然后在下面实现mapView委托(delegate)方法...
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay {
    if ([overlay isKindOfClass:[MKTileOverlay class]]) {
        return [[MKTileOverlayRenderer alloc] initWithTileOverlay:overlay];
    }
}

有关完整引用,请参见https://developer.apple.com/library/ios/documentation/MapKit/Reference/MKTileOverlay_class/Reference/Reference.html

10-07 18:35