使用MKTileOverlay和MKTileOverlayRenderer

3

我在尝试使用iOS 7 beta中提供的MKTileOverlay和MKTileOverlayRenderer来在苹果地图视图上添加Mapbox瓦片图层或Mapbox服务器地图。我将自己的信息放入了一些在线示例代码中,以加载一个地图视图上的服务器地图,但它创建了一个错误,我需要一些帮助来解释。我得到了这个错误:使用未声明的标识符“overlay”。

//.h

@property (strong, nonatomic) IBOutlet MKMapView *mapView;


//.m

NSString *template = @"jbailo.Lighting/tile?z={z}&x={x}&y={y}";
overlay = [[MKTileOverlay alloc ] initWithURLTemplate:template];
overlay.canReplaceMapContent = YES;
[_mapView addOverlay:overlay level:MKOverlayLevelAboveRoads];


-(MKTileOverlayRenderer *)mapView:(MKMapView*)mapView rendererForOverlay:(id<MKOverlay>)overlay {

return [[MKTileOverlayRenderer alloc] initWithOverlay:overlay];

}

请告诉我应该将overlay声明为什么,如果有人使用这些tileOverlays方法的经验,请随时给予建议和建议。

你在哪里声明 overlay?看一下 template 是如何声明为 NSString *template,而 mapView 则是声明为 MKMapView *mapView 的。 - Craig
我并不知道。我只是试图弄清楚为什么会出现这个错误。另外,我该如何在addOverlay时加载地图(模板)。看起来应该可以工作,因为示例就是这样编写的。我正在寻找答案... - user2621075
你会收到错误信息“使用未声明的标识符'overlay'。”,因为你没有声明“overlay”。尝试声明它,错误就应该消失了。 - Craig
2个回答

2
你没有声明覆盖层,这是一个愚蠢的错误。
请用以下代码替换这一行:
overlay = [[MKTileOverlay alloc] initWithURLTemplate:template];
替换为:
MKTileOverlay *overlay = [[MKTileOverlay alloc] initWithURLTemplate:template];
同时,请注意 URL,你可以使用这个示例瓦片: http://c.tile.openstreetmap.org/4/2/6.png 此外,永远不要将 MKTileOverlay 的 level 属性设置为 MKOverlayLevelAboveRoads,而应该使用 MKOverlayLevelAboveLabels。

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接