Я пытаюсь разработать приложение с использованием MKMapView, для которого требуется построить кратчайший путь. Следующим является сценарий. У меня есть от 5 до 10 координат, которые нанесены на карту. Мне нужно нарисовать кратчайший путь, чтобы охватить все эти местоположения из моего текущего местоположения. Это приложение для путешествий, поэтому вам нужно показать оптимальное расстояние. Пожалуйста, поделитесь своими мыслями. Я подумал о том, чтобы найти расстояние до каждой точки из текущего местоположения, но это требует одновременного отправки нескольких запросов, что кажется очень суетным процессом, поскольку точка может быть от 10 до 100. Есть ли решение для этого доступно в Google Карты SDK? В ожидании отличных идей и предложений. Заранее спасибо ...Самый короткий путь между несколькими местоположениями в MKMapView
ответ
Чтобы найти кратчайший путь, вы можете использовать навигационные карты goi api (https://developers.google.com/maps/documentation/directions/#JSON). Тогда у вас есть два варианта:
- сделать это в GMSMapView
Decode кодированного polilyne возвращенного Google с Google Maps SDK и перевести его в MKPolyline, чтобы показать его в MKMapView. Вот фрагмент в Obj-C для второго варианта:
GMSPath *path = [GMSPath pathFromEncodedPath:encodedPolyline]; if (path.count != 0){ CLLocationCoordinate2D points[path.count]; for (NSInteger i = 0; i < path.count; i++){ CLLocationCoordinate2D coordinate = [path coordinateAtIndex:(NSUInteger) i]; points[i] = coordinate; } MKPolyline *p = [MKPolyline polylineWithCoordinates:points count:path.count]; [self.mapView addOverlay:p]; }
У вас есть некоторые ограничения, используя API направления, вы можете увидеть его здесь: https://developers.google.com/maps/documentation/directions/usage-limits
, но в этом случае маршрут идентифицируется путем пропускания двух точек вправо (начало и конец) ?. В моем случае у меня есть несколько точек и не уверен, что является последней точкой, динамически мне нужно найти последнюю точку, которая будет самое длинное расстояние от текущего местоположения – user2577391
Да, вы должны знать начало и конец маршрута. Вы можете рассчитать расстояние между текущим местоположением и всеми точками с помощью distanceFromLocation: а затем использовать самый длинный, как ваш конец. – lorenzoliveto
Вы можете использовать Directions API. Вы можете построить несколько местоположений, установив начальную точку, путевые точки (необязательные) и конечную точку. Например, вы должны построить 5 разных местоположений, ваше текущее местоположение (начальную точку), затем три путевые точки или остановки и конечную точку. API-интерфейс Directions автоматически вычисляет расстояние в соответствии с порядком, в котором вы помещаете путевые точки. Маршруты могут быть пересчитаны, если вы используете optimize:true
, тем самым изменив путевые точки, которые дадут вам кратчайшее расстояние от начальной точки до конечной точки. Это действует только на максимум 8 мест из-за количества пределов путевых точек. Существует обходное решение для этого, идея состоит в том, чтобы сделать последнюю путевую точку (конечный маршрут) первого маршрута начальной точкой следующего маршрута. Вот link для вашей справки и code, который также находится в ссылке.
- 1. Найти кратчайший путь между несколькими местоположениями C#
- 2. Самый короткий путь Алгоритм
- 3. Самый короткий путь между связанными парами кортежей
- 4. Самый короткий путь между двумя узлами Trie
- 5. Самый короткий путь между двумя адресами
- 6. Самый короткий путь между тремя точками
- 7. Самый короткий путь между двумя матрицами
- 8. R, определить самый короткий путь
- 9. Пользовательская карта Самый короткий путь
- 10. Рисовать маршрут карты между несколькими местоположениями
- 11. neo4j uni directional Самый короткий путь
- 12. Самый короткий путь с несколькими «должен иметь» узлы в графе
- 13. Найти самый короткий путь или самый быстрый путь
- 14. Самый короткий путь с препятствиями
- 15. Самый короткий путь к цели?
- 16. Как обеспечивается самый короткий путь в IRC?
- 17. Самый короткий путь между двумя точками в взвешенном 2d массиве
- 18. Самый короткий путь между двумя узлами в графике (Java)
- 19. Самый короткий путь между двумя вершинами в графе
- 20. Neo4j: Самый короткий путь на основе свойства
- 21. Самый короткий путь с максимальным числом вершин
- 22. создать путь между несколькими выводами в качестве маршрута на MKMapView
- 23. Самый короткий путь Дэйкстры-Хакер-Рейн
- 24. Самый короткий путь алгоритма Floyd-Warshall
- 25. Самый короткий путь для посещения всех узлов
- 26. Самый короткий путь в графе приоритета
- 27. Самый короткий путь в 3D-лабиринте
- 28. Самый короткий путь igraph на R
- 29. Самый короткий путь для A Dag
- 30. Самый короткий путь алгоритма динамического графа
https://developers.google.com/maps/documentation/directions/intro. проверьте направление api вида карты. – Wolverine