地理定位自动计算道路距离

时间:2013-03-12 12:20:18

标签: javascript google-maps

我在我的网站上使用此脚本:

<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script>
    (function () {
        var directionsService = new google.maps.DirectionsService(),
            directionsDisplay = new google.maps.DirectionsRenderer(),
            createMap = function (start) {
    var travel = {
            origin : (start.coords)? new google.maps.LatLng(start.lat, start.lng) : start.address,
            destination : "Warszawa, al. jerozolimskie 123",
            travelMode : google.maps.DirectionsTravelMode.DRIVING
            // Exchanging DRIVING to WALKING above can prove quite amusing :-)
        },
        mapOptions = {
            zoom: 10,
            // Default view: downtown Stockholm
            center : new google.maps.LatLng(59.3325215, 18.0643818),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };

    map = new google.maps.Map(document.getElementById("map"), mapOptions);
    directionsDisplay.setMap(map);
    directionsDisplay.setPanel(document.getElementById("map-directions"));
    directionsService.route(travel, function(result, status) {
        if (status === google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(result);
        }
    });
            };

            // Check for geolocation support    
            if (navigator.geolocation) {
    navigator.geolocation.getCurrentPosition(function (position) {
            // Success!
            createMap({
                coords : true,
                lat : position.coords.latitude,
                lng : position.coords.longitude
            });
        }, 
        function () {
            // Gelocation fallback: Defaults to Stockholm, Sweden
            createMap({
                coords : false,
                address : "Polska, Warszawa"
            });
        }
    );
            }
            else {
    // No geolocation fallback: Defaults to Lisbon, Portugal
    createMap({
        coords : false,
        address : "Polska, Warszawa"
    });
            }
    })();
</script>

我有问题与Haversine公式连接,他计算我的位置和设置位置之间的道路距离... 我不需要任何地图或公路线 - 只有公里数:)

有人帮我解决这个问题吗?

非常感谢,

1 个答案:

答案 0 :(得分:0)

我检查了APi并找到了你想要的东西。

之前

  

directionsService.route(

请务必设置:

  

unitSystem:google.maps.UnitSystem.METRIC

旅行变种

然后在调用路径后,Result是DirectionsResult对象。在那里,你将拥有DirectionRoute数组,它有一个带有距离属性的DirectionsLeg数组。

为您的问题解决此问题应该如下:

  

var results = result.rows [0] .elements;

     

var distance = results [0] .distance.text;

distance.text返回“100 km”,其中distance.value只返回“100”,无论你喜欢什么。

当然最好迭代这些数组;)(务必对这些进行检查,因为距离并不总是被填充,在某些情况下距离可能是未知的)

有关API的更多信息,请访问:https://developers.google.com/maps/documentation/javascript/directions?hl=en

PS:请务必使用API​​的实际版本V3,生成自己的密钥并使用它。 https://developers.google.com/maps/documentation/javascript/tutorial?hl=en#api_key