0

私は自分のサイトでこのスクリプトを使用しています:

<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式に接続するのに問題があります...地図や道路線は必要ありません-km数のみ:)

誰かこれを手伝ってくれませんか?

どうもありがとう、

4

1 に答える 1

0

API を確認したところ、必要なものが見つかりました。

方向Service.route(

必ず設定してください:

unitSystem: google.maps.UnitSystem.METRIC

あなたの旅行変数で。

次に、ルートを呼び出した後、Result は DirectionsResult オブジェクトです。そこには、distance 属性を持つ配列 DirectionsLeg を持つ DirectionRoute 配列があります。

問題に対してこれを取得すると、次のように機能するはずです。

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

于 2013-03-12T12:47:55.270 に答える