2016-04-16 17 views
-1

Googleマップを使用して2か所の距離が必要ですが、私はすでに地図を表示してルートを表示していますが、距離が必要です。私の英語は申し訳ありませんが、私の母国語ではありません。Googleマップを使用して距離を計算するにはどうすればよいですか?

これは私のコードです:

<html lang="es"> 
<head> 
    <meta charset="UTF-8"> 
    <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> 
    <title>Testing</title> 
    <script src="http://maps.google.com/maps/api/js"></script> 
    <link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css"> 
    <link rel="stylesheet" type="text/css" href="../css/algo.css"> 
    <script type="text/javascript" > 

var map; 
var myPos; 
var marker; 
var directionsRenderer; 
var directionsService = new google.maps.DirectionsService(); 

if (navigator && navigator.geolocation) { 
    navigator.geolocation.getCurrentPosition(geoOK, geoKO); 
} else { 
    geoMaxmind(); 
} 


function geoOK(position) { 
showMap(position.coords.latitude, position.coords.longitude); 
} 


function geoMaxmind() { 
showMap(geoip_latitude(), geoip_longitude()); 
} 

function geoKO(err) { 
if (err.code == 1) { 
error('El usuario ha denegado el permiso para obtener informacion de ubicacion.'); 
} else if (err.code == 2) { 
error('Tu ubicacion no se puede determinar.'); 
} else if (err.code == 3) { 
error('TimeOut.') 
} else { 
error('Oops!, algo malo pasó.'); 
} 
} 

function showMap(lat, longi) { 

myPos = new google.maps.LatLng(lat,longi); 

var myOptions = { 
    zoom: 16, 
    center: myPos, 
    mapTypeId: google.maps.MapTypeId.ROADMAP, 
} 

map = new google.maps.Map(document.getElementById("mapa"), myOptions); 

marker = new google.maps.Marker({ 
    position: myPos, 
    title:"Su Posición", 
    draggable:false, 
    animation: google.maps.Animation.DROP 
}); 

marker.setMap(map); 

directionsRenderer = new google.maps.DirectionsRenderer(); 
directionsRenderer.setMap(map); 
    travelToAddress(); 
} 

function travelToAddress(){ 

    //Obtenemos la direccion 
    var origen=marker.getPosition(); 

    destino=document.forms[0].address.value; 
    directionsService = new google.maps.DirectionsService(); 
    // opciones de busqueda 
    var request = { 
    origin: origen, 
    destination: destino, 
    travelMode: google.maps.DirectionsTravelMode.DRIVING 
}; 

directionsService.route(request,getRuta); 
} 

function getRuta(result, status){ 

    if (status == google.maps.DirectionsStatus.OK) { 
     directionsRenderer.setDirections(result); 
    } else { 
     error("Ha ocurrido un error debido a : " + status); 
    } 
} 


function error(msg) { 
alert(msg); 
} 
</script> 
</head> 
<body> 
    <div class="contenedor"> 
    <div class="container-fluid"> 
    <header> 

    </header> 
    <main> 
     <?php 
        $conexion = new buscar(__HOST__,__USUARIODB__,__PASSDB__,__DATABASE__); 
        $datos=$conexion->obtenerDireccion($_GET['algo']); 
        if ($datos != false) { ?> 
     <form> 
      <input id="destino" type="text" style="width: 450px" name="address" value="<?php echo $datos['Address']; ?>" /> 

     </form> 
     <?php 
      } 
     ?> 
      <div id="mapa"></div></br></br> 

      <a href="../index.php"><button class="btn btn-primary">Buscar de nuevo</button></a> 
      <?php echo "<a href='resultados.php?buscar=".$_GET['buscar']."'><button class='btn btn-warning'>Regresar</button></a>"; ?> 

    </main> 
    </div><!-- cierre del container-fluid --> 
    </div><!-- fin del contenedor --> 
    <footer> 
     <?php require_once("includes/footer.php") ?> 
    </footer> 


    <script src="../js/jquery-1.12.2.min.js"></script> 
    <script type="text/javascript" src="../js/bootstrap.min.js"></script> 
</body> 
</html> 

ありがとう!

答えて

1

あなたの結果オブジェクトを使用すると、ウェイポイントを持っている場合は、多くの足を合計する必要があり、それは

result.routes[0].legs[0].distance.value 

だけだ、内部にはウェイポイントを持つ単純な旅行のために

https://developers.google.com/maps/documentation/javascript/directions#DirectionsResultsを参照)メートル単位の距離値を持っています

function getRuta(result, status){ 

    if (status == google.maps.DirectionsStatus.OK) { 
     var tDist = 0; 
     var nlegs = result.routes[0].legs.length; 
     for (var i = 0; i < nlegs; i++) { 
      tDist += result.routes[0].legs[i].distance.value; 
     } 
     directionsRenderer.setDirections(result); 
     alert("distance: "+tDist); 

    } else { 
     error("Ha ocurrido un error debido a : " + status); 
    } 
} 
+0

ありがとうございました。 – kev

関連する問題