Ios 将覆盖添加到Mapview
我做iOS开发已经有几个月了。我已经有了一个地图视图,上面固定了一些注释,可以向用户显示当前位置 我一直在试图通读文档来实现一个简单的覆盖,使用一组CLLocationCoordinate2D来绘制一条线(简单静态路由)。这是一场斗争 我的mkoverlayrender方法似乎根本没有运行。如果我没有弄错的话,我不应该需要MKMapViewDelegate。我正在尝试实现MKOverlay委托并拥有“@synthetic boundingMapRect;” 下面是我尝试实现覆盖的代码Ios 将覆盖添加到Mapview,ios,objective-c,mapkit,Ios,Objective C,Mapkit,我做iOS开发已经有几个月了。我已经有了一个地图视图,上面固定了一些注释,可以向用户显示当前位置 我一直在试图通读文档来实现一个简单的覆盖,使用一组CLLocationCoordinate2D来绘制一条线(简单静态路由)。这是一场斗争 我的mkoverlayrender方法似乎根本没有运行。如果我没有弄错的话,我不应该需要MKMapViewDelegate。我正在尝试实现MKOverlay委托并拥有“@synthetic boundingMapRect;” 下面是我尝试实现覆盖的代码 - (vo
- (void)drawLineRoute
{
CLLocationCoordinate2D purplePoints[2];
purplePoints[0] = CLLocationCoordinate2DMake(28.541944, -81.382936);
purplePoints[1] = CLLocationCoordinate2DMake(28.538447, -81.383096);
MKPolyline *purplePolyline = [MKPolyline polylineWithCoordinates:purplePoints count:2];
purplePolyline.title = @"Citrus Bowl Connection";
[self.mapView addOverlay:purplePolyline];
}
- (MKOverlayRenderer *)mapView:(MKMapView *)mapView viewForOverlay: (id<MKOverlay>)overlay
{
if([overlay isKindOfClass:[MKPolyline class]])
{
MKPolygonRenderer *polyRender = [[MKPolygonRenderer alloc] initWithOverlay:overlay];
polyRender.lineWidth = 2;
polyRender.strokeColor = ovoPurple;
return polyRender;
}
return nil;
}
-(无效)图纸路线
{
CLLocationCoordinated2D紫点[2];
紫色点[0]=CLLocationCoordinate2DMake(28.541944,-81.382936);
紫色点[1]=CLLocationCoordinate2DMake(28.538447,-81.383096);
MKPolyline*purplePolyline=[MKPolyline polyline polylineWithCoordinates:purplePoints count:2];
purplePolyline.title=@“柑橘碗连接”;
[self.mapView addOverlay:purplePolyline];
}
-(MKOverlayRenderer*)地图视图:(MKMapView*)地图视图覆盖:(id)覆盖
{
if([overlay iskindof类:[MKPolyline类]])
{
MKPolygonRenderer*polyRender=[[MKPolygonRenderer alloc]initWithOverlay:overlay];
polyRender.lineWidth=2;
polyRender.strokeColor=ovopuple;
返回polyRender;
}
返回零;
}
非常感谢您的帮助或指导。提前感谢大家。有两种不同的委托方法:
- ,它是在iOS 7中引入的,并返回一个
;及mkoverlayrender
- ,在iOS 7中被弃用,但它返回的是
,而不是MKOverlayView
MKOverlayRenderer
mkoverlayrender
的viewForOverlay
是不正确的
总之,如果您需要支持iOS 7之前的iOS版本,请实现返回
MKOverlayView
而不是MKOverlayRenderer
的viewForOverlay
。如果您不需要支持7之前的iOS版本,则根本不实施viewForOverlay
,而是实现返回mkoverlayrender
的renderforoverlay
您是否设置了mapView
的delegate
?您应该让viewcontroller实现MKMapViewDelegate
,同时设置self.mapView.delegate=self代码>。在iOS 7中,你应该使用'rendererForOverlay'方法,而不是viewForOverlay
。我以为我是通过故事板来完成的,但我想我没有。添加:“self.mapView.delegate=self;”在我看来,加载没有导致此视图崩溃。此视图控制器现在向我发出警告“从不兼容的类型'ShuttleMapViewController*const_uu_strong'分配到'id'”非常感谢大家!我需要在viewdidload中添加代理。我在rendermethod中修复了renderForOverlay。