Ionic framework 使用ionic 4中的地理位置计算距离
我已经可以得到我的地图和两点之间的路线,我想计算两点之间的距离,单位为km 跟踪路由的代码Ionic framework 使用ionic 4中的地理位置计算距离,ionic-framework,geolocation,ionic4,ionic-native,directions,Ionic Framework,Geolocation,Ionic4,Ionic Native,Directions,我已经可以得到我的地图和两点之间的路线,我想计算两点之间的距离,单位为km 跟踪路由的代码 displayDirection(_origin, destin) { var ref = this; console.log('DIRECTION'); var directionsService = new google.maps.DirectionsService(); var directionsDisplay = new google.maps.Direction
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);
}
});
}
有人能帮我吗?如果您接受接收到的响应,它将在对象下显示一系列路由
response.routes
在请求对象中,数组将包含一个或多个路由对象。route对象将有一组腿,将旅程分解为更小的部分。简单地迭代腿部以找到总距离。您可以使用以下方法为管线查找它
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;
}
或者,如果您有多个response.routes对象,则迭代该对象。如果您接受接收到的响应,则将在该对象下显示一个路由数组
response.routes
在请求对象中,数组将包含一个或多个路由对象。route对象将有一组腿,将旅程分解为更小的部分。简单地迭代腿部以找到总距离。您可以使用以下方法为管线查找它
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;
}
或者,如果有很多,则迭代response.routes对象。以获取两点之间的距离
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);
}
求两点之间的距离
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);
}