ugrás a tartalomhoz

melyik térkép apiból tudok távolságot lekérdezni?

gex · 2007. Nov. 21. (Sze), 12.28
sziasztok,

egy ismerősömnek kéne útnyilvántartást csinálnom, de az a probléma, hogy év közben ezt nem igazán vezette. szóval adott egy lista, amin címek vannak (napokra lebontva) és egy olyan webes térképszoftvert keresek, amiből könnyen meg tudom kapni két magyarországi cím távolságát.

amit próbáltam:
utvonalterv.hu - szép és jó, de js nélkül nem működik (azaz szerintem csak vmi böngésző scripttel tudnám automatizálni)
maps.google.com - a budapesti címeket úgy ahogy megtalálja, de a vidékiekkel már nem annyira boldogul (a városig még eljut)
maps.yahoo.com - pár címmel próbáltam, vidékre is egész jó házszám szinten is (mérföldben adja meg a távolságot, de ez legyen a legkisebb baj)

tehát most itt tartok, hogy live http headers használata után curl-lel lekérem majd feldolgozom az oldalakat, de nincs ennél valami szebb megoldás? :D

minden tanácsot előre is köszönök!
 
1

Használd ezt:

gyrgyvrs · 2007. Nov. 21. (Sze), 13.28
http://jonas.gergo.googlepages.com/utnyilv.html
2

eredmények

gex · 2008. Jan. 30. (Sze), 13.16
a maps.yahoo.com-mal kezdtem, erősen js függő, egy távolság lekéréséhez kb 4-5 kérést kellett küldenem curl-lel (cookie-k megtartásával). file_get_contents-szel lehetetlen használni. találtam egy yahoo maps apit, de csak észak-amerikát és kanadát ismeri. ezen kívül elég lassú is (a következő maps.google.com-hoz képest).

egy nap után meguntam a maps.yahoo.com-ot, a következő a maps.google.com volt. urlencode-olni kell a két címet és már mehet is a file_get_contents-szes kérés. ~2000 távolságból (~1200 cím) ~160-at kellett kézzel kitölteni, ami ~80 címet jelent (egyszer oda egyszer meg vissza nem tudta a távolságot).

megoldás php alapokon:

<?php
function distance($from, $to) {
    $fromStr = "{$from['zip']} {$from['city']}, {$from['address']}, hungary";
    $toStr = "{$to['zip']} {$to['city']}, {$to['address']}, hungary";
    $url = 'http://maps.google.com/maps?f=d&output=html&saddr=' . urlencode($fromStr) . '&daddr=' . urlencode($toStr);
    
    if (($data = file_get_contents($url)) !== false) {
        if (preg_match('#<div class="noprint"><div>([0-9]+(?:\.[0-9]+)?)&\#160;km &\#8211; about[^<]+</div></div>#i', $data, $matches)) {
            // távolság: $matches[1]
        }
        elseif (preg_match('#did you mean#i', $data)) {
            // nem érti pontosan vagy több lehetőséget is felsorol
        }
        else {
            // fogalma sincs, általában a vidéki címekkel történik ez
        }
    }
    else {
        // hiba a rendszerben
    }
}
?>
a címeket több formában is próbáltam:
házszám utca, város, ország
házszám utca, irszám város, ország
irszám város, házszám utca, ország
tapasztalataim szerint az utolsót találja meg legjobban.

remélem segítettem valakinek.