ЗДЕСЬ карты для JavaScript API: Как рассчитать маршрут? - PullRequest
2 голосов
/ 10 марта 2020

Я хочу реализовать в своем проекте опцию для рисования маршрута на карте, используя HERE maps api, я прочитал документацию и увидел несколько примеров, и если бы я реализовал все это глобально и pu sh stati c маршрут для расчета расстояния, подобного этому :

    const platform = configPlatform();
    const defaultLayers = configLayers();
    var markers = [];
    var map = new H.Map(
    document.getElementById('mapContainer'),
    defaultLayers.vector.normal.map,
    {
      zoom: 10,
    }
    );

    var mapEvents = new H.mapevents.MapEvents(map);
    var behavior = new H.mapevents.Behavior(mapEvents);
    var icon  = setCustomMarker();

    const lineString = new H.geo.LineString();
    var polyline;
    var routingService = platform.getRoutingService();
    var routingParameters = {
    'mode': 'fastest;car',
    'waypoint0': 'geo!50.1120423728813,8.68340740740811',
    'waypoint1': 'geo!52.5309916298853,13.3846220493377',
    'representation': 'display'
    };

    routingService.calculateRoute(routingParameters, success => {
    console.log(success);
    });

Работает нормально, но я хочу сделать все в функциях (инстанцированная платформа должна быть глобальной, и это нормально). Прежде всего, я хочу с помощью навигатора настроить центр карты (текущее положение пользователя), а затем по слушателю событий дать пользователю возможность добавлять маркеры на карту, и все это работает, но если я хочу получить следующие данные pu sh для службы маршрутизации и рассчитать маршрут между Маркеры и все расстояние Я получаю следующую ошибку:

Uncaught (в обещании) TypeError: c не является функцией в eval (eval at (maps js -core. js: 70) ),: 64: 238)

Даже если я просто вызываю метод routingService.calculateRoute () внутри eventlistener, я получаю ту же ошибку. Похоже, что-то в функции Calculate должно быть создано при загрузке карты времени, потому что все работает нормально, когда я вычисляю значение Route рядом с загрузкой карты, но если я использую эту функцию, я слушаю. Это не работает. У кого-то была идея, как сделать возможным запуск этого метода в слушателе (создание глобальной службы маршрутизации не помогает) ??

Ответы [ 2 ]

0 голосов
/ 12 марта 2020

И я настраиваю, что внешние библиотеки не были проблемой. Я мог бы запустить ту же кодовую страницу без какого-либо пользовательского кода ветки и ресурсов, и одна страница, развернутая на сервере лампы, работает правильно. Вторая одна идентичная копия, развернутая на symfony сервере, все еще имела ошибку в js console

Uncaught (в обещании) TypeError: c не является функцией в eval (eval в (maps * 1020) * -core. js: 70), "

Если я пытаюсь прочитать ошибку после отклонения из журнала консоли, я получаю:

Ошибка: [] https://route.ls.hereapi.com/routing/7.2/calculateroute.json?xnlp=CL_JSMv3.1.12.0&apikey= (мой ключ api здесь) = самый быстрый% 3Bcar & waypoint0 = geo! 50.1120423728813% 2C8.68340740740811 & waypoint1 = geo! 52.5309916298853% 2C13.3846220493377 & представление = dragNDrop * не удалось выполнить в eval (eval. 10 * at (maps) 1023 *: 70)

Когда я нажимал на ссылку, у меня было много цифр и конечное расстояние, поэтому ответ об ошибке выглядит для меня как успешный ответ. Это действительно странно для меня. Я думал * Сервер 1024 * не может войти в js на стороне клиента. У кого-то были какие-то возможности, что не так ??

0 голосов
/ 12 марта 2020

Я попробовал ваш код с небольшим обновлением в обратном вызове Calculate и все отлично заработало:

routingService.calculateRoute(routingParameters, success => {
    console.log(success);
});

Если проблема не устранена, пожалуйста, приложите ссылку на простой рабочий пример с этой проблемой.

Недавно я создал простой jsfiddle пример добавления маршрутных точек маршрутизации при обратном вызове события contextmenu (щелчок правой кнопкой мыши), возможно, это также может помочь вам.

...