как рисовать линию маршрута на карте?

Я упоминаю код ниже.

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, NSUInteger idx, 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; 

}

Скриншот:

мой экран вывода с использованием этого кода

особое место

и мой вопрос – сделать линию между местоположением пользователя и дорогой, дорогой и destination.see это изображение.

спасибо за поддержку …

Сделайте линию между местоположением пользователя и начальной точкой, конечной точкой и пунктом назначения.

 [direction calculateDirectionsWithCompletionHandler:^(MKDirectionsResponse *response, NSError *error) { NSLog(@"response = %@",response); NSArray *arrRoutes = [response routes]; [arrRoutes enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, 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",(unsigned long)[steps count]); [steps enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { 

введите описание изображения здесь

  • Выбор элементов программно в UICollectionView
  • cellForItemAtIndexPath не вызывается, но numberOfItemsInSection делает
  • Размытие UIImage за пределами рамки (в стиле Photoshop)
  • Динамически измеренный UILabel, непосредственно следуя UIButton
  • iOS Google Вход в систему, чтобы получить изображение профиля пользователя невозможно? (не Google плюс вход)
  • Обрезка вывода AVCaptureVideoPreviewLayer на квадрат
  • Значение по умолчанию maxConcurrentOperationCount для NSOperationQueue
  • URL-схема для открытия определенного вида с данными
  • Wierd поведение для UIButton setHighlighted после того, как кнопка установлена
  • application: openURL: метод не вызывается
  • Как получить подстроку между фигурными скобками?
  • Interesting Posts

    Разработка iOS: странная проблема с аутентификацией пользователя Game Center

    Почему выполнение многочастных загрузок на S3 на iOS не поддерживается?

    UIModalPresentationFormSheet на iPad. Как настроить высоту UITextView при появлении клавиатуры

    Как определить день, месяц и год как int в iOS

    Xcode 7.3 – предупреждения не отображаются и не могут искать проект

    Как построить cvBlob для iOS

    NSOperation VS GCD для Core-Data

    Заголовок заголовка UITableView Переходы во время навигации

    Как остановить UIScrollView получать события касания от родительского представления?

    Как перейти к следующей строке в подробном представлении

    Установите таймер на UIPageViewController

    Изменение выравнивания ULabel TableView при прокрутке

    tableView cellForRowAtIndexPath: выполняется перед ViewDidLoad?

    Пользовательский SKSpriteNode не обнаружен во время касания

    Как вернуться к корневому контроллеру, но затем нажать на другое представление?

    Давайте будем гением компьютера.