我需要将折线捕捉到道路上,并且我从谷歌找到了一个非常有效的示例。我稍微调整了一下,然后我从 JavaScript 中得到一个 NetworkError,说响应标头没有“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”就在那里,因为我不希望任何人使用我的配额,我已经用我的浏览器密钥替换了它。)