- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我只是想使用 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
你可以在这里找到来源:
关于javascript - 从 Google Maps API 中的 GEvent.addListener 返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1816729/
我是 JavaFX 的新手,我需要绑定(bind) Label 的可见属性,如果它表示的值达到 0,Label > 应该是不可见的。此外,当有界 integerProperty 值发生变化时,它也需要
过去,我还使用了一个调整大小监听器,将 requestAnimationFrame 与它捆绑在一起,作为轮询调整大小事件的某种优化版本: /** * Resize listener * @retu
尝试此操作时出现错误“.addListener 不是函数”: if(document.getElementById("id")){ document.getElementById("id").a
我正在尝试制作 chrome 扩展,但我无法运行我的代码。 这是 list { "name": "My First Extension", "version": "1.0", "d
我正在尝试在行和数据点之间构建一个事件处理程序。我当前收到错误: TypeError: line.getSelection is not a function. 我不太确定如何添加此功能或者我可能会出
我有一个 Chrome 扩展程序和一个简单的网页一起运行。我向扩展程序发送一条消息,此时扩展程序会执行一些异步操作。下面的代码不起作用,因为 sendMessage 上的回调在我的 promise 解
我正在尝试重现 Google map 的 addListener,但使用用于点击、按键等的 jQuery 监听器除外。 在 Moogle map 中,您可以编写 .event.addListener(
我尝试为 ListView 生成一个监听器,该监听器获取存储在所选项目中的字符串,获取它的整数,然后调用一个方法。然而我不断收到 Error:(37, 67) java: no suitable me
我在一个项目中使用谷歌地图,我想在 map 上显示一些可点击的标记,每个标记都显示一个包含不同数据的 Div,所以我通过从数据库中获取数据来开始我的代码并工作好吧,然后我像这样在 map 上显示它:
我的问题如下:GEvent.addListener(map, "click"function(){...}) 在回调函数中返回了什么?我根本没有在 GMaps 引用中找到任何信息,你能给我一些吗?我唯
我正在开发一个需要对不同的自定义事件和监听器使用react的程序。 我试图使用泛型来缩短它,事实是,我不明白我的错误在哪里。 这是我的代码: 听众和事件: public interface MyFir
我相信这个问题之前已经有人问过,但似乎我有点倒霉才找到它。我的问题是如何在过程中间启用按钮/ Actor 的 addListener?例如,在 Activity 屏幕之间的 Assets 加载屏幕上(
我有可变数量的文本字段,我正在动态初始化 Google map 自动完成功能。 问题是每次触发 place_changed 事件时,我都需要确切地知道它是在哪个输入框上触发的。如何将此数据传递到我的
我正在使用如下 JavaScript 函数:- function fileSelectHandler(e) { fileDragHover(e); // some more code
在下面的 HTML 代码中,我希望在 map 更改(例如缩放、拖动、单击)时收到警报。 该警报将来将更改为在拖动、缩放或单击时显示 Angular 坐标。然后,“获取 Angular 落”按钮将被省略
我希望能够从内容脚本(任何选项卡)与后台进行通信。 根据文档,我应该使用 chrome.extension chrome.runtime.onMessage与chrome.runtime.sendMe
我有一个单独的谷歌地图v3代码。只是为了当我点击它时在我的 google fusion kml 层中显示 infowindow 信息框。昨天我的代码工作正常。我没有做任何改变。但今天我的 addLis
这个问题已经有答案了: JavaScript closure inside loops – simple practical example (45 个回答) 已关闭 6 年前。 这是我的代码: fu
我知道在类组件中我们以这种方式使用 addListener: const Animated.Value= new Animated.Value(0); Animated.Value.addListen
我正在尝试测试我的 Ant 申请 react 测试库 ,但我不断收到此错误: TypeError: Cannot read property 'addListener' of undefined 我使
我是一名优秀的程序员,十分优秀!