如何在地图上绘制路径线?

时间:2013-07-10 13:35:39

标签: ios objective-c rubymotion

我正在使用Rubymotion构建iOS应用。 我试图使用坐标在地图上绘制一条线(路径)。 我可以在我的应用程序中运行它但我在地图上看不到任何行(也没有错误)。

@mapview = MKMapView.alloc.initWithFrame(view.bounds)
@mapview.mapType = MKMapTypeStandard
@mapview.delegate = self
@mapview.showsUserLocation = true
@mapview.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight

view.addSubview(@mapview)

然后我尝试画线

path = [CLLocationCoordinate2D.new(41.878114,-87.629798), CLLocationCoordinate2D.new(41.865947,-87.622576)]

pointers = Pointer.new(CLLocationCoordinate2D.type, path.length)
pointers[0] = path[0]
pointers[1] = path[1]

polyLine = MKPolyline.polylineWithCoordinates(pointers, count:2)

@mapview.addOverlay(polyLine)

1 个答案:

答案 0 :(得分:1)

我不是ruby的专家,但为了在地图上实际看到叠加视图,您需要将您的类设置为地图的委托并实现– mapView:viewForOverlay:协议方法,您需要返回要显示地图的实际MKPolyLineView对象!

在Objective C中,我只需将此方法实现为:

 - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id < MKOverlay >)overlay
 {
    if ( [overlay isKindOfClass:[MKPolyLine class]] {
       MKPolyLineView *polyView = [[MKPolyLineView alloc] initWithPolyline:overlay];
       return polyView;
    }
 }

希望这有帮助!