Javascript 谷歌距离矩阵需要返回值
我使用google distance matrix api通过以下方式获得两个地理点的最短距离:Javascript 谷歌距离矩阵需要返回值,javascript,jquery,google-maps,google-maps-api-3,Javascript,Jquery,Google Maps,Google Maps Api 3,我使用google distance matrix api通过以下方式获得两个地理点的最短距离: <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script> <script> var origin1 = new google.maps.LatLng(9.6667, 80.0000); var destinationA =
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&signed_in=true"></script>
<script>
var origin1 = new google.maps.LatLng(9.6667, 80.0000);
var destinationA = new google.maps.LatLng(9.6689, 80.0059);
function calculateDistances() {
var service = new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
origins: [origin1],
destinations: [destinationA],
travelMode: google.maps.TravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC,
avoidHighways: false,
avoidTolls: false
}, callback);
}
function callback(response, status) {
if (status != google.maps.DistanceMatrixStatus.OK) {
alert('Error was: ' + status);
} else {
var origins = response.originAddresses;
for (var i = 0; i < origins.length; i++) {
var results = response.rows[i].elements;
for (var j = 0; j < results.length; j++) {
alert(results[j].distance.text);
}
}
}
}
</script>
var origin1=新的google.maps.LatLng(9.6667,80.0000);
var destinationA=new google.maps.LatLng(9.6689,80.0059);
函数CalculateInstances(){
var service=new google.maps.DistanceMatrixService();
service.getDistanceMatrix(
{
起源:[原文1],
目的地:[目的地],
travelMode:google.maps.travelMode.DRIVING,
unitSystem:google.maps.unitSystem.METRIC,
避免:错误,
避免收费:错误
},回调);
}
函数回调(响应、状态){
if(status!=google.maps.DistanceMatrixStatus.OK){
警报(“错误为:”+状态);
}否则{
var origins=response.originAddresses;
对于(变量i=0;i
在这段代码中,我成功地获得了最短距离。但是我需要在调用方法CalculateInstances()时返回该值,而不是警告该值。在回调方法中我该怎么做 我会将一个数组作为一个全局变量,包含元素的数量和一个全局变量。然后,在回调中,我将增加元素的数量,并将当前数组元素设置为距离
希望这能回答你的问题。祝你好运 距离矩阵服务是异步的,因此,您需要传递一个
回调
方法,以便在请求完成时执行,以处理结果。但是你可以考虑将异步API转换成承诺。
以下示例演示如何使用jQuery将距离矩阵服务API转换为承诺:
var origin1=新的google.maps.LatLng(9.6667,80.0000);
var destinationA=new google.maps.LatLng(9.6689,80.0059);
函数计算状态(起点、终点){
var service=new google.maps.DistanceMatrixService();
var d=$.Deferred();
service.getDistanceMatrix(
{
起源:起源,
目的地:目的地,
travelMode:google.maps.travelMode.DRIVING,
unitSystem:google.maps.unitSystem.METRIC,
避免:错误,
避免收费:错误
},
功能(响应、状态){
if(status!=google.maps.DistanceMatrixStatus.OK){
d、 拒绝(状态);
}否则{
d、 决心(回应);
}
});
返回d.promise();
}
计算位置([origin1],[destinationA])
.完成(功能(响应){
var origins=response.originAddresses;
对于(变量i=0;i
回调意味着不为返回值执行Show我可以将此方法更改为返回方法吗?为什么需要“返回”数据?DirectionsMatrix是异步的,您不能从它的回调函数返回任何内容,您必须在回调函数中的数据可用时使用它。你还没有告诉use你试图对返回的数据做什么。我需要返回数据并将它们存储在一个数组中。我根据这里的评论添加了一个更新的答案,以防你仍然需要。祝你好运!