【问题标题】:Calculate distance using geolocation in ionic 4在ionic 4中使用地理位置计算距离
【发布时间】:2020-07-16 04:53:46
【问题描述】:

我已经可以得到我的地图和两点之间的路线,我想计算两点之间的距离(公里)

追踪路线的代码

displayDirection(_origin, destin) {
    var ref = this;
    console.log('DIRECTION');
    var directionsService = new google.maps.DirectionsService();
    var directionsDisplay = new google.maps.DirectionsRenderer();

    directionsDisplay.setMap(ref.map)


    directionsService.route({
      origin: _origin,
      destination: destin,
      travelMode: 'DRIVING'
    }, (response, status) => {
      console.log("Response: " + response + " Status: " + status);

      if (status === 'OK') {
        directionsDisplay.setDirections(response);
      } else {
        console.log("Can't set directions due to " + response);
      }
    });
  }

有人可以帮我吗?

【问题讨论】:

    标签: ionic-framework geolocation ionic4 ionic-native directions


    【解决方案1】:

    得到两点之间的距离

         getDistanceFromLatLonInKm(lat1,lon1,lat2,lon2) {
      var R = 6371; // Radius of the earth in km
      var dLat = this.deg2rad(lat2-lat1);  // deg2rad below
      var dLon = this.deg2rad(lon2-lon1); 
      var a = 
        Math.sin(dLat/2) * Math.sin(dLat/2) +
        Math.cos(this.deg2rad(lat1)) * Math.cos(this.deg2rad(lat2)) * 
        Math.sin(dLon/2) * Math.sin(dLon/2)
        ; 
      var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1-a)); 
      var d = R * c; // Distance in km
      return d.toFixed(2);
    }
    

    【讨论】:

      【解决方案2】:

      如果您接受收到的响应,则会在对象下方显示一个路由数组

      response.routes
      

      在您的请求对象中,该数组将包含一个或多个路由对象。路线对象将有一系列腿,将旅程分解成更小的部分。只需迭代腿以找到总距离。您可以使用以下方法找到它的路线。

      findRouteDistance(route) {
      
          var total_distance = 0;
          var route_legs = route.legs;
      
          for(var i=0; i < route_legs.length; i++) {
               total_distance += route_legs[i].distance.value;
          }
      
          return total_distance;
      }
      

      如果您只有 1 个路由对象,只需调用

      findRouteDistance(response.routes[0])
      

      如果你有很多,或者迭代 response.routes 对象。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-01-05
        • 1970-01-01
        • 2011-12-24
        • 2017-08-03
        • 2020-01-28
        相关资源
        最近更新 更多