API Карт Google не работает с XHR

Мне нужно привязать полилинию к дороге, и я нашел пример из Google, который работает очень хорошо. Я немного подправил его, а затем получил ошибку NetworkError из JavaScript, сказав, что заголовки ответа не имеют заголовка "Access-Control-Allow-Origin". Если я проверю responseText из моего XHR он дает мне стандартную страницу Google 404.

Вопрос в том, как я должен использовать Roads API, если он не допускает перекрестные запросы?

Код:

getSnappedPoints: function (path) { //path is an array of latlng
    var xhr = new XMLHttpRequest();
    var snappedCoords = new Array();
    var pathValues = new Array();
    for (var i = 0; i < path.getLength(); i++)
        pathValues.push(path.getAt(i).toUrlValue());

    console.log(pathValues.join("|"));
    xhr.open("GET", "https://roads.googleapis.com/v1/snapToRoads?interpolate=true&path=" + pathValues.join("|") + "&key=MY_API_KEY", false);
    xhr.send();
    for (var i = 0; i < JSON.parse(xhr.responseText).snappedPoints.length; i++)
        snappedCoords.push(new google.maps.LatLng(JSON.parse(xhr.responseText).snappedPoints[i].location.latitude, JSON.parse(xhr.responseText).snappedPoints[i].location.longitude));
    return snappedCoords;
}

("MY_API_KEY" просто потому, что я не хочу, чтобы кто-то использовал мои квоты, я заменил его на свой ключ браузера.)

1 ответ

Решение

Работает на документации, которая https:, если я пытаюсь получить доступ к веб-сервису из jsfiddle на https с помощью http: или же http: с помощью httpsЯ получаю сообщение об ошибке. Работает только при доступе к API через https: если ваша страница безопасна (работает https:), если ваша страница работает http: использование http: чтобы получить доступ к API.

Другие вопросы по тегам