2016-09-29 57 views
-1

我在应用程序中集成了Google Maps JavaScript API。我需要通过给定的路径来计算行驶距离。如何从Google Maps JavaScript API中的给定路径值获取距离?

路径是等,

var path = [ 
      {lat: 36.579, lng: -118.292}, 
      {lat: 36.606, lng: -118.0638}, 
      {lat: 36.433, lng: -117.951}, 
      {lat: 36.588, lng: -116.943}, 
      {lat: 36.34, lng: -117.468}, 
      {lat: 36.24, lng: -116.832}]; 

使用上述值需要计算距离。给我你的宝贵意见。

+0

离哪里到哪里的阵列的版本? – jeerbl

回答

1

要使用Google Maps Javascript API v3 spherical geometry distance methods,“点”需要为google.maps.LatLng对象,而不是google.maps.LatLngLiteral对象。

至少有四个选项:

  1. 您google.maps.LatLngLiterals的数组转换为google.maps.LatLng物件。
var path = [ 
     new google.maps.LatLng(36.579, -118.292), 
     new google.maps.LatLng(36.606, -118.0638), 
     new google.maps.LatLng(36.433, -117.951), 
     new google.maps.LatLng(36.588, -116.943), 
     new google.maps.LatLng(36.34, -117.468), 
     new google.maps.LatLng(36.24, -116.832)]; 
var distanceInMeters = google.maps.geometry.spherical.computeLength(path); 
  • 创建与google.maps.LatLngLiterals的阵列的google.maps.Polyline,然后调用.getPath在该折线。
  • var polyline = new google.maps.Polyline({ 
         map: map, 
         path: path 
    }); 
    var distanceInMeters = google.maps.geometry.spherical.computeLength(polyline.getPath()); 
    
  • 转换您坐标google.maps.LatLng并调用计算距离上每对,积累的距离。
  • var distanceInMeters = 0; 
    for (var i=0; i<path.length-1; i++) { 
        distanceInMeters += google.maps.geometry.spherical.computeDistanceBetween(new google.maps.LatLng(path[i].lat, path[i].lng),new google.maps.LatLng(path[i+1].lat, path[i+1].lng)); 
    } 
    
  • 写自己haversine公式即需要LatLngLiterals
  • 相关问题