gpt4 book ai didi

javascript - 从 Google Maps API 中的 GEvent.addListener 返回值?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:22:56 24 4
gpt4 key购买 nike

我只是想使用 Google Maps API 获取 map 上 2 个点的距离。使用 GDirections。问题是函数完成后,distance 始终为空。我知道这是因为直到函数完成后才调用“加载”事件。事件监听器也不返回值,所以我很困惑!

有人知道如何让这个函数返回距离吗?也许有更好的方法来获取 Google Maps API 中两点之间的距离?

function getDistance(fromAddr, toAddr) {    
var distance;
var directions;

directions = new GDirections(null, null);
directions.load("from: " + fromAddr + " to: " + toAddr);

GEvent.addListener(directions, "load", function() {
distance = directions.getDistance().html;
distance = distance.replace(/&.*/, '');
});

return distance; //outputs null
}

最佳答案

GDirections 加载 是异步的。在触发 load 事件之前,您将无法使用加载请求的结果。这意味着您的 getDistance 函数只是设置了 GDirections 加载 请求,它无法同步(立即)获取请求的结果。 GDIrections 对象必须离开并向 Google 发出 HTTP 请求,以便它可以计算出两点之间的距离。

您需要做的是将使用距离的代码放入传递给加载请求的回调函数中:

GEvent.addListener(directions, "load", function() {
// this is a callback function that is called after
// the getDistance function finishes.
var distance = directions.getDistance().html;

// Have a distance now, need to do something with it.
doSomethingWithTheDistanceWeGotBack (distance);
});

下面是一个使用GDirections load的例子(获取的是行驶时长,不是距离,但是原理是一样的):

http://www.cannonade.net/geo.php?test=geo6

你可以在这里找到来源:

http://www.cannonade.net/geo6.js

关于javascript - 从 Google Maps API 中的 GEvent.addListener 返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1816729/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com