我正在尝试在提供的地图应用程序中显示包含多个点的路线。
我已经想出如何在this post之后显示两点之间的路线。我正在these directions之后构建一个包含多个点的列表。
根据我的理解,打开maps.google.com(在iOS中)将打开地图应用程序(如果地图不可用,则打开Safari)。
结果是地图应用程序仍然只显示开始和目的地之间的路线。添加了mrad
参数的点未显示。
是否可以在iOS中显示包含多个目的地的路线(不构建我自己的地图系统)?
答案 0 :(得分:3)
对于你的问题,答案是肯定的。
但我会停止尝试在那里看起来很聪明。你正在寻找错误的SO问题和答案。您正在寻找的是一个两步过程:
幸运的是,显然有一个Github项目可以满足您的需求。我没有使用它,所以我不知道它的质量,但它肯定比我在这里解释如何做更好。
https://github.com/kishikawakatsumi/MapKit-Route-Directions
我建议你看一下。
答案 1 :(得分:2)
刚刚使用Google maps api V3编写了一个小样本,以显示iOS 6+上的路线 https://github.com/manishnath/iOSPlotRoutesOnMap
答案 2 :(得分:0)
以下是通过多个位置获取连接路线的简单易用的代码。 要完成项目,请继续 - https://github.com/vikaskumar113/RouteWithMultipleLocation
NSArray *dictionary = @[
@{
@"Source_lat": @"28.6287",
@"Source_lon": @"77.3208",
@"Dest_lat": @"28.628454",
@"Dest_lon": @"77.376945",
@"S_address": @"Vaishali,Delhi",
},
@{
@"Source_lat": @"28.628454",
@"Source_lon": @"77.376945",
@"Dest_lat": @"28.5529",
@"Dest_lon": @"77.3367",
@"S_address": @"Noida Sec 63",
},
@{
@"Source_lat": @"28.5529",
@"Source_lon": @"77.3367",
@"Dest_lat": @"28.6276",
@"Dest_lon": @"77.2784",
@"S_address": @"Noida Sec 44",
},
@{
@"Source_lat": @"28.6276",
@"Source_lon": @"77.2784",
@"Dest_lat": @"28.6287",
@"Dest_lon": @"77.3208",
@"S_address": @"Laxmi Nagar,Delhi",
},
];
for (int i=0; i<dictionary.count; i++) {
NSDictionary*dict=[dictionary objectAtIndex:i];
NSString*S_lat=[dict valueForKey:@"Source_lat"];
NSString*S_lon=[dict valueForKey:@"Source_lon"];
NSString*D_lat=[dict valueForKey:@"Dest_lat"];
NSString*D_lon=[dict valueForKey:@"Dest_lon"];
NSString*address=[dict valueForKey:@"S_address"];
NSString* apiUrlStr =[NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%@,%@&destination=%@,%@&sensor=false",S_lat,S_lon, D_lat, D_lon
];
NSData *data =[NSData dataWithContentsOfURL:[NSURL URLWithString:apiUrlStr]];
[self performSelectorOnMainThread:@selector(fetchedData:) withObject:data waitUntilDone:YES];
CLLocationCoordinate2D coord;
coord.latitude=[S_lat floatValue];
coord.longitude=[ S_lon floatValue];
MKCoordinateRegion region1;
region1.center=coord;
region1.span.longitudeDelta=0.2 ;
region1.span.latitudeDelta=0.2;
[theMapView setRegion:region1 animated:YES];
MKPointAnnotation *sourceAnnotation = [[MKPointAnnotation alloc]init];
sourceAnnotation.coordinate=coord;
sourceAnnotation.title=address;
[theMapView addAnnotation:sourceAnnotation];
}