#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.