我怎样才能在 javascript 中获得以公里为单位的总距离
How can i get the total distance in KM in my javascript
如何在我的 javascript 中获得以公里为单位的总距离。它已经显示在面板顶部,但我的 javascript 中也需要此值。我的javascript如下:
var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();
var map = new google.maps.Map(document.getElementById('map'), {
zoom:7,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('panel'));
var een = '52.3641205';
var twee = '4.905697000000032';
var drie = '52.6010666';
var vier = '4.73768229999996';
var p1 = new google.maps.LatLng(een, twee);
var p2 = new google.maps.LatLng(drie, vier);
var request = {
origin: p1,
destination: p2,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
alert('Total travel distance is:' + response);
directionsDisplay.setDirections(response);
}
});
功能正常,但我还想提醒总距离。这可以在面板的顶部看到。该面板在未来将不可见,因此 getelementbyID 函数是不够的。
有人可以帮我解决这个问题吗?
谢谢!
塞尔吉奥
在您的请求中,设置units=metric
。
然后在您的警报中使用:distance = response.routes[0].legs[0].distance.text;
。
根据 documentation:
unitSystem
Type: UnitSystem
Preferred unit system to use when displaying distance. Defaults to the unit system used in the country of origin.
因此,如果您想将其强制为 METRIC:
var request = {
origin: p1,
destination: p2,
travelMode: google.maps.DirectionsTravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC
};
这将强制 response.routes[0].legs[0].distance.text
的值使用公制。
并且如@geocodezip 答案中所述,您还可以依赖始终以米为单位返回的 response.routes[0].legs[0].distance.value
,即使原产国使用英制也是如此。
中可用
google.maps.Distance object specification
A representation of distance as a numeric value and a display string.
Properties Type Description
text string A string representation of the distance value, using the UnitSystem specified in the request.
value number The distance in meters.
代码片段:
var geocoder;
var map;
function initialize() {
var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();
map = new google.maps.Map(document.getElementById('map'), {
zoom: 7,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('panel'));
var een = '52.3641205';
var twee = '4.905697000000032';
var drie = '52.6010666';
var vier = '4.73768229999996';
var p1 = new google.maps.LatLng(een, twee);
var p2 = new google.maps.LatLng(drie, vier);
var request = {
origin: p1,
destination: p2,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
document.getElementById('distance').innerHTML = 'Total travel distance is: ' + (response.routes[0].legs[0].distance.value / 1000).toFixed(2) + " km";
alert('Total travel distance is: ' + (response.routes[0].legs[0].distance.value / 1000).toFixed(2) + ' km');
directionsDisplay.setDirections(response);
}
});
}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="distance"></div>
<div id="map" style="border: 2px solid #3872ac;"></div>
<div id="panel"></div>
您可以通过以下方式轻松获取距离:
directionsDisplay.directions.routes[0].legs[0].distance.text
例如,结果将是“20.5 公里”之类的文本。
如何在我的 javascript 中获得以公里为单位的总距离。它已经显示在面板顶部,但我的 javascript 中也需要此值。我的javascript如下:
var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();
var map = new google.maps.Map(document.getElementById('map'), {
zoom:7,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('panel'));
var een = '52.3641205';
var twee = '4.905697000000032';
var drie = '52.6010666';
var vier = '4.73768229999996';
var p1 = new google.maps.LatLng(een, twee);
var p2 = new google.maps.LatLng(drie, vier);
var request = {
origin: p1,
destination: p2,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
alert('Total travel distance is:' + response);
directionsDisplay.setDirections(response);
}
});
功能正常,但我还想提醒总距离。这可以在面板的顶部看到。该面板在未来将不可见,因此 getelementbyID 函数是不够的。
有人可以帮我解决这个问题吗?
谢谢!
塞尔吉奥
在您的请求中,设置units=metric
。
然后在您的警报中使用:distance = response.routes[0].legs[0].distance.text;
。
根据 documentation:
unitSystem
Type: UnitSystem
Preferred unit system to use when displaying distance. Defaults to the unit system used in the country of origin.
因此,如果您想将其强制为 METRIC:
var request = {
origin: p1,
destination: p2,
travelMode: google.maps.DirectionsTravelMode.DRIVING,
unitSystem: google.maps.UnitSystem.METRIC
};
这将强制 response.routes[0].legs[0].distance.text
的值使用公制。
并且如@geocodezip 答案中所述,您还可以依赖始终以米为单位返回的 response.routes[0].legs[0].distance.value
,即使原产国使用英制也是如此。
google.maps.Distance object specification A representation of distance as a numeric value and a display string. Properties Type Description text string A string representation of the distance value, using the UnitSystem specified in the request. value number The distance in meters.
代码片段:
var geocoder;
var map;
function initialize() {
var directionsService = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();
map = new google.maps.Map(document.getElementById('map'), {
zoom: 7,
mapTypeId: google.maps.MapTypeId.ROADMAP
});
directionsDisplay.setMap(map);
directionsDisplay.setPanel(document.getElementById('panel'));
var een = '52.3641205';
var twee = '4.905697000000032';
var drie = '52.6010666';
var vier = '4.73768229999996';
var p1 = new google.maps.LatLng(een, twee);
var p2 = new google.maps.LatLng(drie, vier);
var request = {
origin: p1,
destination: p2,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
document.getElementById('distance').innerHTML = 'Total travel distance is: ' + (response.routes[0].legs[0].distance.value / 1000).toFixed(2) + " km";
alert('Total travel distance is: ' + (response.routes[0].legs[0].distance.value / 1000).toFixed(2) + ' km');
directionsDisplay.setDirections(response);
}
});
}
google.maps.event.addDomListener(window, "load", initialize);
html,
body,
#map {
height: 100%;
width: 100%;
margin: 0px;
padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js"></script>
<div id="distance"></div>
<div id="map" style="border: 2px solid #3872ac;"></div>
<div id="panel"></div>
您可以通过以下方式轻松获取距离:
directionsDisplay.directions.routes[0].legs[0].distance.text
例如,结果将是“20.5 公里”之类的文本。