使用ios的系统地图api路线规划画线,在有的手机上不能显示线路?

在模拟器和我的设备上都可以出现路径,但在个别手机上,也是ios9系统,不出现路径。

  • (void)drawLine{
    CLGeocoder *geocoder = [CLGeocoder new];

    [geocoder geocodeAddressString:@"天宫庄园" completionHandler:^(NSArray placemarks, NSError error) {

       CLPlacemark *placemark1 = [placemarks firstObject];
       [geocoder geocodeAddressString:@"梁祝文化公园" completionHandler:^(NSArray *placemarks, NSError *error) {
           CLPlacemark *placemark2 = [placemarks firstObject];
           [self drawPlacemark1:placemark1 placemark2:placemark2];
       }];
    

    }];
    }

  • (void)drawPlacemark1:(CLPlacemark )mark1 placemark2:(CLPlacemark )mark2{

    MKPlacemark *mkPlacemark1 = [[MKPlacemark alloc] initWithPlacemark:mark1];
    MKMapItem *item1 = [[MKMapItem alloc]initWithPlacemark:mkPlacemark1];

    MKPlacemark *mkPlacemark2 = [[MKPlacemark alloc] initWithPlacemark:mark2];
    MKMapItem *item2 = [[MKMapItem alloc]initWithPlacemark:mkPlacemark2];

    MKDirectionsRequest *request = [MKDirectionsRequest new];
    request.source = item1;
    request.destination = item2;

    MKDirections *direction = [[MKDirections alloc] initWithRequest:request];

    [direction calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse response, NSError error) {

       for (MKRoute *route in response.routes) {
           MKPolyline *polyline = route.polyline;
           [self.mapView addOverlay:polyline];
       }

    }];
    }

pragma mark - 画线

  • (MKOverlayRenderer )mapView:(MKMapView )mapView rendererForOverlay:(id<MKOverlay>)overlay
    {
    MKPolylineRenderer * polyline = [[MKPolylineRenderer alloc] initWithOverlay:overlay];

    polyline.strokeColor = [UIColor grayColor];

    polyline.lineWidth = 4;
    polyline.lineJoin = kCGLineJoinBevel;
    return polyline;

    }

阅读 3.7k
1 个回答

[geocoder geocodeAddressString:@"梁祝文化公园" completionHandler:^(NSArray placemarks, NSError error) {

   CLPlacemark *placemark2 = [placemarks firstObject];
   [self drawPlacemark1:placemark1 placemark2:placemark2];

}];

这里是不是应该在遍历过程中,交换placemark2placemark1指针。

抱歉上面是瞎说的。

我测了你的代码,在我的设备上可以画出线路,从浙江省宁波市鄞州区天宫庄园浙江省宁波市鄞州区梁祝文化公园,建议您在drawPlacemark1方法中加入log或者断点,检查CLPlacemark是否返回正确,网络状况不佳会导致这种情况,应该作出相应处理,即应该检查NSError是否有值,并作出相应处理。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题