ios – 如何在地图视图中绘制路线?

ios – 如何在地图视图中绘制路线?,第1张

概述我提到的代码如下. MKPlacemark *source = [[MKPlacemark alloc]initWithCoordinate:CLLocationCoordinate2DMake(37.33554,-121.885209) addressDictionary:[NSDictionary dictionaryWithObjectsAndKeys:@"",@"", nil] ];M 我提到的代码如下.

MKPlacemark *source = [[MKPlacemark alloc]initWithCoordinate:CLLocationCoordinate2DMake(37.33554,-121.885209) addressDictionary:[NSDictionary dictionaryWithObjectsAndKeys:@"",@"",nil] ];MKMAPItem *srcMAPItem = [[MKMAPItem alloc]initWithPlacemark:source];[srcMAPItem setname:@""];MKPlacemark *destination = [[MKPlacemark alloc]initWithCoordinate:CLLocationCoordinate2DMake(latttt,lonnn) addressDictionary:[NSDictionary dictionaryWithObjectsAndKeys:@"",nil] ];MKMAPItem *distMAPItem = [[MKMAPItem alloc]initWithPlacemark:destination];[distMAPItem setname:@""];MKDirectionsRequest *request = [[MKDirectionsRequest alloc]init];[request setSource:srcMAPItem];[request setDestination:distMAPItem];[request setTransportType:MKDirectionsTransportTypeautomobile];MKDirections *direction = [[MKDirections alloc]initWithRequest:request];[direction calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response,NSError *error) {    NSLog(@"response = %@",response);    NSArray *arrRoutes = [response routes];    [arrRoutes enumerateObjectsUsingBlock:^(ID obj,NSUInteger IDx,BOol *stop) {        MKRoute *rout = obj;        MKpolyline *line = [rout polyline];        [self.mapVIEw setVisibleMapRect:[line boundingMapRect]];        [self.mapVIEw addOverlay:line];        NSLog(@"Rout name : %@",rout.name);        NSLog(@"Total distance (in Meters) :%f",rout.distance);        NSArray *steps = [rout steps];        NSLog(@"Total Steps : %lu",(unsigned long)[steps count]);        [steps enumerateObjectsUsingBlock:^(ID obj,BOol *stop) {            [arr_direction addobject:[obj instructions]];           // NSLog(@"%@",arr_direction);            int latt=[obj distance];            Nsstring *List_la=[Nsstring stringWithFormat:@"%d",latt];                 [arr_distance addobject:List_la];            // NSLog(@"%@",arr_distance);        }];        [directions_table reloadData ];    }];}];

和vIEwForOverlay函数是

- (MKOverlayVIEw *)mapVIEw:(MKMapVIEw *)mapVIEw vIEwForOverlay:(ID)overlay {if ([overlay isKindOfClass:[MKpolyline class]]) {    MKpolylineVIEw* aVIEw = [[MKpolylineVIEw alloc]initWithpolyline:(MKpolyline*)overlay] ;    aVIEw.strokecolor = [[UIcolor redcolor] colorWithAlphaComponent:1.0];    aVIEw.linewidth = 7;    return aVIEw;}return nil;

}

屏幕截图:

my output screen using this code

particular place

我的问题是在用户位置和道路,道路和目的地之间划线.看到这张图片.

谢谢支持……

解决方法 在用户位置和起点,终点和目的地之间划线.

[direction calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response,BOol *stop) {        MKRoute *route = obj;        MKpolyline *line = [route polyline];        [self.mapVIEw setVisibleMapRect:[line boundingMapRect]];        [self.mapVIEw addOverlay:line];        NSLog(@"Rout name : %@",route.name);        NSLog(@"Total distance (in Meters) :%f",route.distance);        ////// EDITED FROM HERE by Kosuke //////        NSUInteger pointCount = route.polyline.pointCount;        // allocate a C array to hold this many points/coordinates...        CLLocationCoordinate2D *routeCoordinates        = malloc(pointCount * sizeof(CLLocationCoordinate2D));        // get the coordinates (all of them)...        [route.polyline getCoordinates:routeCoordinates                                 range:NSMakeRange(0,pointCount)];        // make line between User location and Start point        CLLocationCoordinate2D coordinates1[2] = {userCoordinate,routeCoordinates[0]};        MKpolyline *line1 = [MKpolyline polylineWithCoordinates:coordinates1 count:2];        [self.mapVIEw addOverlay:line1];        // make line between Finish point and Destination location        CLLocationCoordinate2D coordinates2[2] = {routeCoordinates[pointCount - 1],destinationCoordinate};        MKpolyline *line2 = [MKpolyline polylineWithCoordinates:coordinates2 count:2];        [self.mapVIEw addOverlay:line2];        //free the memory used by the C array when done with it...        free(routeCoordinates);        //////////////////        NSArray *steps = [rout steps];        NSLog(@"Total Steps : %lu",BOol *stop) {

总结

以上是内存溢出为你收集整理的ios – 如何在地图视图绘制路线?全部内容,希望文章能够帮你解决ios – 如何在地图视图中绘制路线?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/1048061.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-25
下一篇2022-05-25

发表评论

登录后才能评论

评论列表(0条)

    保存