2016-04-16 3 views
-1

Мне нужно расстояние между двумя местами, используя карты Google, я уже показываю карту и показываю маршрут, но мне нужно расстояние, потому что мне нужно показать более близкое расстояние сначала, а затем самое дальнее в таблице. Извините за мой английский, это не мой родной язык.Как рассчитать расстояние, используя карты 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

ваш объект результат имеет значение расстояния в метрах внутри (см https://developers.google.com/maps/documentation/javascript/directions#DirectionsResults)

для простой поездки без путевых точек, это просто

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

, если у вас есть путевые точки, вы должны суммировать много ног

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

Смежные вопросы