
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 – 如何在地图视图中绘制路线?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)