WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   Räkna ut avstånd mellan 2 adresser (https://www.wn.se/forum/showthread.php?t=1054466)

tartareandesire 2012-08-12 19:26

Citat:

Ursprungligen postat av Erik Stenman (Inlägg 20447180)
Väldigt ofta går det att lägga in en google-karta som på något sätt lägger till ett mervärde så försök komma på en användning för en karta så är det lugnt att använda köravståndet via googles api.

Mm, den biten är nog ganska lätt att komma undan med. Man får dock inte bygga upp en egen databas hur som helst med hjälp av deras data.

Kekke 2012-08-12 21:35

Funktion för att räkna ut köravstånd för svenska adresser om någon är intresserad:

PHP-kod:

<?php
function get_driving_information($start$finish$raw false)
{
    if(
strcmp($start$finish) == 0)
    {
        
$time 0;
        if(
$raw)
        {
            
$time .= ' seconds';
        }

        return array(
'distance' => 0'time' => $time);
    }

    
$start  urlencode($start);
    
$finish urlencode($finish);

    
$distance   'unknown';
    
$time       'unknown';

    
$start htmlentities(addslashes($start),ENT_QUOTES,'UTF-8');
    
$finish htmlentities(addslashes($finish),ENT_QUOTES,'UTF-8');

    
$url 'http://maps.googleapis.com/maps/api/directions/xml?origin='.$start.'&destination='.$finish.'&sensor=false';
    if(
$data file_get_contents($url))
    {
        
$xml = new SimpleXMLElement($data);

        if(isset(
$xml->route->leg->duration->value) AND (int)$xml->route->leg->duration->value 0)
        {
            if(
$raw)
            {
                
$distance = (string)$xml->route->leg->distance->text;
                
$time     = (string)$xml->route->leg->duration->text;
            }
            else
            {
                
$distance = (int)$xml->route->leg->distance->value 1000;
                
$time     = (int)$xml->route->leg->duration->value;
            }
        }
        else
        {
            throw new 
Exception('Could not find that route');
        }

        return array(
'distance' => $distance'time' => $time);
    }
    else
    {
        throw new 
Exception('Could not resolve URL');
    }
}

try
{
    
$info get_driving_information('Adress''Adress, Stockholm');
    echo 
$info['distance'].' km '.$info['time'].' seconds';
}
catch(
Exception $e)
{
    echo 
'Caught exception: '.$e->getMessage()."\n";
}
?>

http://www.paul-norman.co.uk/2009/07...e-time-in-php/


Alla tider är GMT +2. Klockan är nu 09:16.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson