首页
\
问答
\
如何在两个位置之间绘制路线并使用MapKit绘制主要点?(How to draw route between two locations and plot main points also using MapKit?)
如何在两个位置之间绘制路线并使用MapKit绘制主要点?(How to draw route between two locations and plot main points also using MapKit?)
我正在使用MapKit api获取地图上的当前位置,并通过放置引脚指向两个位置之间的绘制路线。我还希望获取其路线之间的所有主要立场。 我使用下面的函数来获取两个位置之间的路线
- (NSArray*)getRoutePointFrom:(MyLocation*)origin to:(MyLocation*)destination { NSString* saddr = [NSString stringWithFormat:@"%f,%f", origin.coordinate.latitude, origin.coordinate.longitude]; NSString* daddr = [NSString stringWithFormat:@"%f,%f", destination.coordinate.latitude, destination.coordinate.longitude]; NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&sensor=false&avoid=highways&mode=driving",saddr,daddr]]; NSError *error=nil; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ; [request setURL:url]; [request setHTTPMethod:@"POST"]; NSURLResponse *response = nil; NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error: &error]; NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; SBJsonParser *json=[[SBJsonParser alloc] init]; NSDictionary *dic=[json objectWithString:responseString error:nil]; NSDictionary *nextdic=[dic valueForKey:@"routes"]; NSDictionary *legdic=[nextdic valueForKey:@"legs"]; NSDictionary *stepdic=[legdic valueForKey:@"steps"]; NSArray *array=[[NSArray alloc] initWithArray:[[stepdic valueForKey:@"polyline"] valueForKey:@"points"]]; NSString *string=[NSString stringWithFormat:@"%@",[[array objectAtIndex:0] objectAtIndex:0]]; return [self decodePolyLine:[string mutableCopy]]; } -(NSMutableArray *)decodePolyLine:(NSString *)encodedStr { NSMutableString *encoded = [[NSMutableString alloc] initWithCapacity:[encodedStr length]]; [encoded appendString:encodedStr]; [encoded replaceOccurrencesOfString:@"\\\\" withString:@"\\" options:NSLiteralSearch range:NSMakeRange(0, [encoded length])]; NSInteger len = [encoded length]; NSInteger index = 0; NSMutableArray *array = [[NSMutableArray alloc] init] ; NSInteger lat=0; NSInteger lng=0; while (index < len) { NSInteger b; NSInteger shift = 0; NSInteger result = 0; do { b = [encoded characterAtIndex:index++] - 63; result |= (b & 0x1f) << shift; shift += 5; } while (b >= 0x20); NSInteger dlat = ((result & 1) ? ~(result >> 1) : (result >> 1)); lat += dlat; shift = 0; result = 0; do { b = [encoded characterAtIndex:index++] - 63; result |= (b & 0x1f) << shift; shift += 5; } while (b >= 0x20); NSInteger dlng = ((result & 1) ? ~(result >> 1) : (result >> 1)); lng += dlng; NSNumber *latitude = [[NSNumber alloc] initWithFloat:lat * 1e-5]; NSNumber *longitude = [[NSNumber alloc] initWithFloat:lng * 1e-5]; // printf("[%f,", [latitude doubleValue]); // printf("%f]", [longitude doubleValue]); CLLocation *loc =[[CLLocation alloc] initWithLatitude:[latitude floatValue] longitude:[longitude floatValue]] ; [array addObject:loc]; } NSLog(@"array in decode polygon is %@",array); return array; }
但它不起作用。 ..
关于这个谢谢你的帮助!...
I am using MapKit api to get current location on map and drawing route between two location pointed by drop pins.I also want to get all the main stands between its route. I m using below function to get route between two location
- (NSArray*)getRoutePointFrom:(MyLocation*)origin to:(MyLocation*)destination { NSString* saddr = [NSString stringWithFormat:@"%f,%f", origin.coordinate.latitude, origin.coordinate.longitude]; NSString* daddr = [NSString stringWithFormat:@"%f,%f", destination.coordinate.latitude, destination.coordinate.longitude]; NSURL *url=[NSURL URLWithString:[NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%@&destination=%@&sensor=false&avoid=highways&mode=driving",saddr,daddr]]; NSError *error=nil; NSMutableURLRequest *request = [[NSMutableURLRequest alloc] init] ; [request setURL:url]; [request setHTTPMethod:@"POST"]; NSURLResponse *response = nil; NSData *responseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error: &error]; NSString *responseString = [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]; SBJsonParser *json=[[SBJsonParser alloc] init]; NSDictionary *dic=[json objectWithString:responseString error:nil]; NSDictionary *nextdic=[dic valueForKey:@"routes"]; NSDictionary *legdic=[nextdic valueForKey:@"legs"]; NSDictionary *stepdic=[legdic valueForKey:@"steps"]; NSArray *array=[[NSArray alloc] initWithArray:[[stepdic valueForKey:@"polyline"] valueForKey:@"points"]]; NSString *string=[NSString stringWithFormat:@"%@",[[array objectAtIndex:0] objectAtIndex:0]]; return [self decodePolyLine:[string mutableCopy]]; } -(NSMutableArray *)decodePolyLine:(NSString *)encodedStr { NSMutableString *encoded = [[NSMutableString alloc] initWithCapacity:[encodedStr length]]; [encoded appendString:encodedStr]; [encoded replaceOccurrencesOfString:@"\\\\" withString:@"\\" options:NSLiteralSearch range:NSMakeRange(0, [encoded length])]; NSInteger len = [encoded length]; NSInteger index = 0; NSMutableArray *array = [[NSMutableArray alloc] init] ; NSInteger lat=0; NSInteger lng=0; while (index < len) { NSInteger b; NSInteger shift = 0; NSInteger result = 0; do { b = [encoded characterAtIndex:index++] - 63; result |= (b & 0x1f) << shift; shift += 5; } while (b >= 0x20); NSInteger dlat = ((result & 1) ? ~(result >> 1) : (result >> 1)); lat += dlat; shift = 0; result = 0; do { b = [encoded characterAtIndex:index++] - 63; result |= (b & 0x1f) << shift; shift += 5; } while (b >= 0x20); NSInteger dlng = ((result & 1) ? ~(result >> 1) : (result >> 1)); lng += dlng; NSNumber *latitude = [[NSNumber alloc] initWithFloat:lat * 1e-5]; NSNumber *longitude = [[NSNumber alloc] initWithFloat:lng * 1e-5]; // printf("[%f,", [latitude doubleValue]); // printf("%f]", [longitude doubleValue]); CLLocation *loc =[[CLLocation alloc] initWithLatitude:[latitude floatValue] longitude:[longitude floatValue]] ; [array addObject:loc]; } NSLog(@"array in decode polygon is %@",array); return array; }
but it is not working . ..
help regarding this thank you!...
原文:https://stackoverflow.com/questions/12490753
更新时间:2022-01-07 13:01