Я хотел бы реализовать маршрутизацию на своей карте с использованием OSRM и Openlayers 3, но, похоже, нигде нет никаких примеров или руководств. Все образцы сбивают с толку

Источники, упомянутые 1: http://workshop.pgrouting.org/chapters/ol3_client.html (в этом примере я не знаю, откуда взять данные для построения ломаной линии, я буду получать данные как json, который содержит массив объектов с широтой и долготой)

2: http://wiki.openstreetmap.org/wiki/Routing/online_routers don ' Я не знаю, с чего начать, чтобы добиться этого

3: Маршрутизация OSRM в Openlayers 3

Я могу нарисовать прямую линию, но я хотел нарисовать линии разного цвета по направлению карты, я узнал, что для этого мне нужно использовать службу направления, может ли любой орган указать какой-либо образец кода или опубликовать любую помощь будь благодарен, пожалуйста, скажи способ достичь этого

1
DhanaLaxshmi 30 Дек 2015 в 09:25

2 ответа

Лучший ответ

Начните использовать онлайн-сервис и, если вам это удобно, разработайте свой собственный (при необходимости)

Итак, допустим, вы собираетесь использовать СВОЮ службу маршрутизации. информация и подробности здесь

  1. создать запрос GET http://www.yournavigation.org/api/1.0/gosmore.php?format=geojson&flat=52.215676&flon=5.963946&tlat=52.2573&tlon=6.1799&v=motorcar&fast=1&layer=mapnik

Просто введите указанный выше URL-адрес в браузер. Он вернет вам ответ, содержащий координаты строки, которую вы ищете. Чтобы использовать его в своем собственном приложении, вам, вероятно, придется создать прокси-сервлет, чтобы избежать проблемы междоменного сценария.

  1. Разобрать ответ, вернувшись. Обратите внимание, что ответ не является правильным geojson (по крайней мере, как ol3 может его понимать), поэтому вы получаете координаты, создаете геометрию и перепроецируете их в свою проекцию

  2. Наконец, отобразите свой маршрут на карте и увеличьте масштаб маршрута

Вот скрипка, чтобы увидеть ее в действии. Обратите внимание, что я использую ответ на вышеуказанный запрос как объект json в коде.

ОБНОВЛЕНИЕ

Тот же запрос на OSRM будет

https://api-osrm-routed-production.tilestream.net/viaroute?instructions=true&alt=true&loc=52.215676,5.963946&loc=52.2573,6.1799

Это должно вернуть закодированную ломаную линию. Таким образом, вы можете декодировать свой маршрут с помощью класса ol.format.Polyline. Проверьте эту скрипку

2
pavlos 7 Янв 2016 в 10:27

Рассмотрим эту скрипку для начала:

map.on('click', function(evt){
  utils.getNearest(evt.coordinate).then(function(coord_street){
    var last_point = points[points.length - 1];
    var points_length = points.push(coord_street);

    utils.createFeature(coord_street);

    if (points_length < 2) {
      msg_el.innerHTML = 'Click to add another point';
      return;
    }

    //get the route
    var point1 = last_point.join();
    var point2 = coord_street.join();

    fetch(url_osrm_route + point1 + ';' + point2).then(function(r) { 
      return r.json();
    }).then(function(json) {
      if(json.code !== 'Ok') {
        msg_el.innerHTML = 'No route found.';
        return;
      }
      msg_el.innerHTML = 'Route added';
      //points.length = 0;
      utils.createRoute(json.routes[0].geometry);
    });
  });
});
1
Jonatas Walker 14 Сен 2016 в 17:54