【发布时间】:2017-12-12 02:54:08
【问题描述】:
我尝试根据纬度和经度获取站点的海拔高度。当我使用 ajax 调用时出现错误。我已经尝试过 HTTP 和 HTTPS 得到相同的错误消息是
“请求的资源上没有 'Access-Control-Allow-Origin' 标头。因此不允许访问 Origin 'http://localhost'。”
但它在浏览器中给出的相同 URL (https://maps.googleapis.com/maps/api/elevation/json?locations=36.7391536,-110.9847034)。
我添加了一些标题信息,例如 ('Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': true,'Access-Control-Allow-Methods': 'GET,放置,发布,删除')。 数据类型:'json' / 'jsonp' / 'application/json' 和 crossDomain: true, 但它不起作用。
ajax 调用适用于地理编码 URL,但不适用于高程 URL
siteElevationlatLong: function (lat, long) {
var deferred = $q.defer();
$.ajax({
url: 'https://maps.googleapis.com/maps/api/elevation/json',
data: {
sensor: false,
locations: lat +',' + long,
},
dataType: 'json',
success: function (data) {
if (data.status == "OK" || data.status == "ZERO_RESULTS") {
deferred.resolve(data.results);
} else {
deferred.resolve([]);
}
},
error: function (jqXHR, textStatus, errorThrown) {
deferred.reject(jqXHR.responseText);
}
});
return deferred.promise;
}
【问题讨论】:
-
是的,我已经尝试过 Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Credentials': true 这两个然后我也没有得到结果
-
必须在来自服务器的响应中设置标头,即由 Google 设置。
-
那我该如何实现这个
-
我认为您可能需要使用不同的 API。您正在尝试使用为应用程序开发人员设计的 API。浏览器版本见developers.google.com/maps/documentation/javascript/elevation。
-
兄弟,我没有在这里显示任何地图,只是我需要基于纬度和经度的海拔高度
标签: javascript jquery angularjs ajax google-maps