任何人都可以看到我的函数有任何问题吗?我像这样调用函数:
var elevation = getElevation(tempWaypt);
tempWaypt是一个LatLng对象文字,它一直告诉我
elevation
未定义!
function getElevation(location) {
elevator.getElevationForLocations({
'locations': [location]
}, function(results, status) {
if (status === 'OK')
{
if (results[0])
{
return results[0].elevation;
}
}
});
}
我正在使用该功能来确定 LatLng 是在陆地上还是在海上!另外,当我在getElevation函数中设置一个变量等于:
results[0].elevation
它给了我正确的答案
许多Google Maps API服务都是异步的。如果您想访问结果,您可以执行但不限于以下方式,或使用承诺。
var elevation;
function getElevation(location) {
..., function(results, status) {
...
if (results[0]) {
elevation = results[0];
}
...
}
使用承诺
getElevation.then(function(elevation){
console.log("Elevation: " + elevation);
});
function getElevation(location) {
return new Promise(function(resolve, reject) {
//...
function(results, status) {
//...
if (results[0]) {
resolve(results[0]);
} else {
reject('Your reason ...');
}
//...
}
}
高程可能是一种棘手的方法,可以确定一个点是在水上还是在陆地上,因为地球上许多干燥的地方都存在于海平面或海平面以下。您可能希望使用专门处理水的数据源获得更明确的答案。
我在一家公司工作,该公司提供免费的 Web API 来确定点是在水上还是陆地上。我们在内部使用它。它被称为 onwater.io,它相当简单:给定纬度和经度,它将通过 get 请求准确地返回 true 或 false。
关于水的例子:https://api.onwater.io/23.92323,-66.3
{
lat: 23.92323,
lon: -66.3,
water: true
}
陆地示例:https://api.onwater.io/42.35,-71.1
{
lat: 42.35,
lon: -71.1,
water: false
}
由于您使用的是 JavaScript,因此您可以使用以下示例 jQuery 代码段:
function is_water_huh(lat, lon) {
$.get( "https://api.onwater.io/api/v1/results/" + lat + "," + lon, function( data ) {
return data['water'];
});
}
alert(is_water_huh(23.92323, -66.3));