2011-01-10 2 views
7

Die Unterstützung der Google Geolocation-API ist jetzt in den meisten Browsern integriert. Sie tun dies, indem sie an Google die MAC-Adresse der nahe gelegenen 802.11 Zugangspunkte senden (jene, deren Beacons von Ihrem Computer erfasst werden).Geolokalisierung von 802.11-Zugriffspunkten nach MAC-Adresse mithilfe der Geolocation-API von Google

Ich habe eine große Anzahl von 802.11 Paketen, die von den verschiedenen Positionen gefangen werden. Ich suche die 802.11 Access Points zu geolocate. Angenommen, wir haben nur ihre Mac-Adressen. Dies sollte mithilfe der Google Geolocation API möglich sein.

Quellen, die ich bisher gefunden habe, die auf diese hilfreich sein könnten gehören:

Die erste ist wahrscheinlich die bestes Gebot. Problem ist, ich bin nicht sicher, wie man das Beispiel dort benutzt und wirklich ein Programm erschafft, das mir erlaubt, die MAC-Adressen einzubringen und lat/long Paare auszugeben. Ich bin mir auch nicht sicher, wie man JavaScript von einer Unix/MacOS Befehlszeile aus ausführt.

Ich weiß, dass dies eine Menge zu fragen ist, aber hat irgendjemand irgendeine Ahnung, wo ich anfangen sollte?

Antwort

9
<?php 

$mac = $_SERVER['argv'][1]; 


$postData = '{ 
    "version": "1.1.0", 
    "wifi_towers": [{ 
     "mac_address": "' . $mac . '", 
     "ssid": "0", 
     "signal_strength":-72 
    }] 
}'; 

$opts = array(
    'http'=>array(
    'method' => "POST", 
    'header' => 'Content-type: application/x-www-form-urlencoded', 
    'content' => $postData 
) 
); 


$response = file_get_contents(
    'http://www.google.com/loc/json', 
    false, 
    stream_context_create($opts) 
); 

$loc = json_decode($response, true); 

echo $loc['location']['latitude']; 
echo ','; 
echo $loc['location']['longitude']; 

Befehlszeile Nutzung:

php geo.php "mac addy here" 
+0

wow. tolle. Vielen Dank. Wieso kann ich sowas nicht machen? – vy32

+1

Ich glaube, dass der Google-Standortdienst auch https unterstützt, für das, was es wert ist. – npdoty

+1

Jetzt bin ich wirklich verwirrt. Ich habe das mit einer Reihe von Ethernet-Adressen versucht und sie kommen alle zurück: {'city': u 'Monterey', 'zip': u'93940 ',' land ': u'United States', 'region' : 'Kalifornien', 'lang': -121.894676, 'Straße': u'W Franklin St ',' lat ': 36.600237,' Genauigkeit ': 43000.0} Das macht für mich keinen Sinn. – vy32

Verwandte Themen