calculatematrix с использованием javascript API, а не REST

#mootools #here-api

#mootools #здесь-api

Вопрос:

Я пытаюсь использовать calculatematrix API для загрузки пунктов назначения и вычисления расстояния до них из заданного местоположения (мои примеры сначала преобразуют почтовый индекс в latlng)

Используя REST api и jQuery, я могу заставить это работать нормально. Смотрите этот JSFiddle — https://jsfiddle.net/vostrx9m /

 $.ajax({
  url: 'https://geocoder.api.here.com/6.2/geocode.json',
  type: 'GET',
  dataType: 'jsonp',
  jsonp: 'jsoncallback',
  data: {
    app_id: 'XHHvADl4hLUQWLbUOGNp',
    app_code: '-Zhl4CYrM03JxXabdROElA',
    searchtext: 'TR9 6QA'
  },
  success: function(data) {
    var LatLon = data.Response.View[0].Result[0].Location.NavigationPosition[0].Latitude   ","   data.Response.View[0].Result[0].Location.NavigationPosition[0].Longitude;
    $.ajax({
      url: 'https://matrix.route.api.here.com/routing/7.2/calculatematrix.json',
      type: 'GET',
      dataType: 'jsonp',
      jsonp: 'jsoncallback',
      data: {
        mode: 'fastest;truck;traffic:disabled;',
        start0: LatLon,
        destination0: '50.395118,-4.934356',
        destination1: '50.464852,-5.031908',
        destination2: '50.541548,-4.938789',
        app_id: 'XHHvADl4hLUQWLbUOGNp',
        app_code: '-Zhl4CYrM03JxXabdROElA',
        summaryAttributes: 'distance,traveltime'
      },
      success: function(data) {
        for (i in data.response.matrixEntry) {
          $('p').append("dest("   i   "), "   data.response.matrixEntry[i].summary.distance   " meters, "   data.response.matrixEntry[i].summary.travelTime   " seconds<br>");
        }
      }
    });
  }
});
  

Однако наш сайт использует MooTools, поэтому я переписал это в mootools, и теперь у меня возникают проблемы с CORS. «был заблокирован политикой CORS: ответ на предполетный запрос не проходит проверку контроля доступа: у него нет статуса HTTP ok». Похоже, что при предварительном запуске выдается ошибка разрешения — смотрите этот JSFiddle здесь — https://jsfiddle.net/1av2wkye/5 /

 getDistancesFromPostCode('TR84LP')
function getDistancesFromPostCode(StartPostCode) {
    console.log('getDistancesFromPostCode: '   StartPostCode)
    var req = new Request({
        method: 'get', 
        url: "https://geocoder.api.here.com/6.2/geocode.json", 
        data: {
            app_id: 'XHHvADl4hLUQWLbUOGNp',
        app_code: '-Zhl4CYrM03JxXabdROElA',
            searchtext: StartPostCode
        }, 
        onComplete: function(data) {
            console.log(data)
            var StartLatLon = data.Response.View[0].Result[0].Location.NavigationPosition[0].Latitude   ","   data.Response.View[0].Result[0].Location.NavigationPosition[0].Longitude;
            console.log(StartLatLon)
            getDistancesFromLatLng(StartLatLon)
        },
    }).send();
}

function getDistancesFromLatLng(StartLatLon) {
    console.log('getDistancesFromLatLng: '   StartLatLon)
    var req = new Request({
        method: 'get', 
        url: "https://matrix.route.api.here.com/routing/7.2/calculatematrix.json", 
        data: {
            mode: 'fastest;truck;traffic:disabled;',
            start0: StartLatLon,
            destination0: '50.4153650,-5.0698703',destination1: '50.4154830,-5.0698890',destination2: '50.473036820553446, -4.707902895605457',
            app_id: 'XHHvADl4hLUQWLbUOGNp',
        app_code: '-Zhl4CYrM03JxXabdROElA',
            summaryAttributes: 'distance,traveltime'
        }, 
        onComplete: function(data) {
            console.log(data)
            for (i in data.response.matrixEntry) {
                console.log("dest("   i   "), "   data.response.matrixEntry[i].summary.distance   " meters, "   data.response.matrixEntry[i].summary.travelTime   " seconds<br>");
            }
        },
    }).send();
}
  

Есть идеи, что MooTools делает неправильно или как я это исправляю?

Если нет, я попробовал другую тактику, написав что-то против Javascript API, и у меня заработал geoencode, но я не вижу никаких ссылок на calculatematric API в документации JavaScript, есть идеи?

Спасибо

Ответ №1:

Поскольку запрос должен быть запросом типа JSONP, я бы предположил, используя Request .JSONP из MooTools должен помочь с проблемой CORS. ЗДЕСЬ Javascript API не поддерживает конечную точку calculate matrix API.