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