Установка изображения на карте — плохой способ реализовать эту функцию. Для рисования пути Apple предоставила MKPolyline. Это позаботится обо всех ваших заботах о сохранении своей позиции в отношении фактора Zoom.
Пожалуйста, проверьте следующее для рисования полилинии
iPhone: как провести линию между двумя точками в MapKit?
or
http://pinkstone.co.uk/how-to-draw-an-mkpolyline-on-a-map-view/
В конечном итоге ваша цель будет состоять в том, чтобы каким-то образом получить широту промежуточных местоположений либо через встроенный API-интерфейс Direction, либо через API-интерфейсы третьей стороны, такие как Google Direction API.
Перечислите эти местоположения и нарисуйте полилинии на карте. Та же логика и вещи будут там, если вы в будущем попробуете с Google Maps. Только Мехтоды и Классы будут изменены.
- (void)drawLine {
// remove polyline if one exists
[self.mapView removeOverlay:self.polyline];
// create an array of coordinates from allPins
CLLocationCoordinate2D coordinates[self.allPins.count];
int i = 0;
for (Pin *currentPin in self.allPins) {
coordinates[i] = currentPin.coordinate;
i++;
}
// create a polyline with all cooridnates
MKPolyline *polyline = [MKPolyline polylineWithCoordinates:coordinates count:self.allPins.count];
[self.mapView addOverlay:polyline];
self.polyline = polyline;
// create an MKPolylineView and add it to the map view
self.lineView = [[MKPolylineView alloc]initWithPolyline:self.polyline];
self.lineView.strokeColor = [UIColor redColor];
self.lineView.lineWidth = 5;
}
ИЗМЕНИТЬ
ЕСЛИ ВЫ ХОТИТЕ РИСОВАТЬ, ИСПОЛЬЗУЯ GOOGLE API и GOOGLE MAP
-(void)drawPathFrom:(CLLocation*)source toDestination:(CLLocation*)destination{
NSString *baseUrl = [NSString stringWithFormat:@"http://maps.googleapis.com/maps/api/directions/json?origin=%f,%f&destination=%f,%f&sensor=true", source.coordinate.latitude, source.coordinate.longitude, destination.coordinate.latitude, destination.coordinate.longitude];
NSURL *url = [NSURL URLWithString:[baseUrl stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]];
NSLog(@"Url: %@", url);
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
if(!connectionError){
NSDictionary *result = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil];
NSArray *routes = [result objectForKey:@"routes"];
if([routes isKindOfClass:[NSArray class]] && routes.count>0){
NSDictionary *firstRoute = [routes objectAtIndex:0];
NSString *encodedPath = [firstRoute[@"overview_polyline"] objectForKey:@"points"];
GMSPolyline *polyPath = [GMSPolyline polylineWithPath:[GMSPath pathFromEncodedPath:encodedPath]];
polyPath.strokeColor = [UIColor blueColor];
polyPath.strokeWidth = 3.5f;
polyPath.map = _mapView;
}
}
}];
}
person
Mrug
schedule
03.12.2015