перевод жестко закодированного ввода в переменный ввод в вызове API - PullRequest
0 голосов
/ 15 января 2019

Я слежу за примерами карт Здесь для матричного калькулятора, и мой рабочий пример использует жестко закодированные значения.Я хочу перевести это в полезный код, перебирая переменные, чтобы добавить к вызову API.Я перепробовал много способов сделать это, но все они приводят к ошибке 400 (неправильно отформатированный вызов)

приведенный ниже код работает (хотя при использовании моего app_code и app_id)

$.ajax({
    url: "https://matrix.route.api.here.com/routing/7.2/calculatematrix.json",
    type: "GET",
    dataType: "jsonp",
    jsonp: "jsoncallback",
    data: {
        app_code: "xxxxxxxxxxxxxx",
        app_id: "xxxxxxxxxxxx",
        destination0: "52.5488,-3.4974",
        mode: "fastest;car",
        start0: "52.7972,-3.1031",
        start1: "52.5795,-3.8714",
        start2: "52.5735,-3.1266",
        start3: "51.9295,-2.8547",
        start4: "51.9498,-3.5812",
        summaryAttributes: "di,tt"
    },
    success: function(data, status) {
        var i;
        for (i = 0; i < data.response.matrixEntry.length; i++) {
            alert("Start" + i + ": Distance: " + data.response.matrixEntry[i].summary.distance + " Time: " + data.response.matrixEntry[i].summary.travelTime);
        }
    },
    error: function(data) {
        alert("error encountered trying to get mileage");
    }
});

моя попытканиже не работает

var sourceLocations = [{
    lat: "52.7972",
    lng: "-3.1031",
    title: "Source_1",
    distance: 0
}, {
    lat: "52.5795",
    lng: "-3.8714",
    title: "Source_2",
    distance: 0
}, {
    lat: "52.5735",
    lng: "-3.1266",
    title: "Source_3",
    distance: 0
}, {
    lat: "51.9295",
    lng: "-2.8547",
    title: "Source_4",
    distance: 0
}, {
    lat: "51.9498",
    lng: "-3.5812",
    title: "Source_5",
    distance: 0
}];
var myData = "{\"app_code\":\"J_lS80f2OSqMMDWFy2ZOmA\",\"app_id\":\"J_lS80f2OSqMMDWFy2ZOmA\",";
myData = myData + "\"destination0\":\"52.5488,-3.4974\",";
myData = myData + "\"mode\":\"fastest;car\",";
// loop thru source locations
var i;
for (i = 0; i < sourceLocations.length; i++) {
    var ele = "\"start" + i + "\":";
    myData = myData + ele + "\"" + sourceLocations[i].lat + "," + sourceLocations[i].lng + "\",";
}
myData = myData + "\"summaryAttributes\":\"di,tt\"}";
$.ajax({
    url: "https://matrix.route.api.here.com/routing/7.2/calculatematrix.json",
    type: "GET",
    dataType: "jsonp",
    jsonp: "jsoncallback",
    data: myData,
    success: function(data, status) {
        console.debug(data);
        var i;
        for (i = 0; i < data.response.matrixEntry.length; i++) {
            alert("Start" + i + ": Distance: " + data.response.matrixEntry[i].summary.distance + " Time: " + data.response.matrixEntry[i].summary.travelTime);
        }
    },
    error: function(data) {
        alert("error encountered trying to get mileage");
    }
});

Может ли кто-нибудь помочь мне, пожалуйста, с правильным кодом и, если возможно, где я иду не так.

Ответы [ 2 ]

0 голосов
/ 16 января 2019

сделай так:

   var myData = {
    app_code: "YOUR_APP_CODE",
    app_id: "YOUR_APP_ID",
    destination0: "52.5488,-3.4974",
    mode: "fastest;car",
    summaryAttributes: "di,tt"
};

// loop thru source locations
for (var i = 0; i < sourceLocations.length; i++)
    myData["start" + i] = parseFloat(sourceLocations[i].lat) + "," + parseFloat(sourceLocations[i].lng);

$.ajax({
    url: "https://matrix.route.api.here.com/routing/7.2/calculatematrix.json",
    type: "GET",
    data: myData,
    success: function (data, status) {
        console.debug(data);
        var i;
        for (i = 0; i < data.response.matrixEntry.length; i++) {
            console.log("Start" + i + ": Distance: " + data.response.matrixEntry[i].summary.distance + " Time: " + data.response.matrixEntry[i].summary.travelTime);
        }
    },
    error: function (data) {
        alert("error encountered trying to get mileage");
    }
});
0 голосов
/ 16 января 2019

Я предлагаю вам использовать Инструмент разработчика (нажмите F12 для браузеров), чтобы проверить отправленный вами запрос.

...