Iphone 如何在mkmapview中打开OpenStreetmap-苹果手机

Iphone 如何在mkmapview中打开OpenStreetmap-苹果手机,iphone,mkmapview,openstreetmap,Iphone,Mkmapview,Openstreetmap,我已经通过了一些相关的答案,但似乎没有得到正确的答案或我需要的答案 当我们在mkmap视图中打开Google地图时,我想在mkmap视图中打开openstreet地图 如果有任何链接或示例代码显示,请将其传递 提前感谢MKMapView符合谷歌地图条款和条件,因此它只使用谷歌地图。您不能像那样将OpenStreetMap集成到MKMapView中。谷歌代码有一个API,可以在iphone中呈现OpenStreetMap RouteMe还提供了一个很好的文档,说明如何将其包含到我们的项目中。所以请

我已经通过了一些相关的答案,但似乎没有得到正确的答案或我需要的答案

当我们在mkmap视图中打开Google地图时,我想在mkmap视图中打开openstreet地图

如果有任何链接或示例代码显示,请将其传递


提前感谢

MKMapView符合谷歌地图条款和条件,因此它只使用谷歌地图。您不能像那样将OpenStreetMap集成到MKMapView中。谷歌代码有一个API,可以在iphone中呈现OpenStreetMap


RouteMe还提供了一个很好的文档,说明如何将其包含到我们的项目中。所以请随意使用它

导入这些框架:

#import <MapKit/MapKit.h>
这是类中的某个地方,它是mapView的委托(很可能是视图控制器)

(MKOverlayRenderer*)地图视图:(MKMapView*)地图视图渲染器ForOverlay:(id)overlay
{
if([overlay iskindof类:[MKTileOverlay类]]){
//用新模板覆盖平铺
返回[[mktileoverlay渲染器alloc]initWithTileOverlay:overlay];
}
返回零;
}

对于未来的访客,这个答案不再适用。
@interface ViewController () <MKMapViewDelegate>
(void)viewDidLoad
{
    // Tile system URL template goes here
    NSString *template = @"http://tile.openstreetmap.org/{z}/{x}/{y}.png"; 

    // Associating overlay with URL template
    MKTileOverlay *overlay = [[MKTileOverlay alloc] initWithURLTemplate:template]; 

    // Allowing overlays on MKMapView & disabling Apple map data
    overlay.canReplaceMapContent = YES; 

    // Adding overlay to MKMapView above Apple lables
    [self.mapView addOverlay:overlay level:MKOverlayLevelAboveLabels];

    // Linking the delegate to allow the next method to be called
    self.mapView.delegate = self; 
}
(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay 
{
    if ([overlay isKindOfClass:[MKTileOverlay class]]) {
        // Overlay the tile with the new template
        return [[MKTileOverlayRenderer alloc] initWithTileOverlay:overlay]; 
    }
    return nil;
}