2011-01-10 4 views
7

Google Geolocation API에 대한 지원이 이제 대부분의 브라우저에 내장되어 있습니다. 그들은 근처의 802.11 액세스 포인트 (귀하의 컴퓨터가 비컨을 캡처 한 주소)의 MAC 주소를 Google에 보내 일부를 수행합니다.Google Geolocation API를 사용하여 MAC 주소로 Geolocating 802.11 액세스 포인트

다양한 위치에서 많은 양의 802.11 패킷을 캡처했습니다. 802.11 액세스 포인트를 지오 코딩하려고합니다. 우리는 단지 그들의 맥 주소를 가지고 있다고 가정한다. 이는 Google Geolocation API를 사용하여 가능해야합니다. 나는이에 도움이 될 수있는 현재까지 발견했습니다

소스는 다음과 같습니다

첫 번째는 아마도입니다 최고의 내기. 문제는, 어떻게 거기에 예제를 사용하여 실제로 MAC 주소 및 출력 위도/경도 쌍 파이프 수있는 프로그램을 만드는 방법을 잘 모르겠습니다. 또한 Unix/MacOS 명령 줄에서 JavaScript를 실행하는 방법을 모르겠습니다.

나는 이것이 많이 묻는다는 것을 알고 있지만, 누구도 내가 시작해야 할 단서가 있습니까?

답변

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']; 

명령 행 사용 :

php geo.php "mac addy here" 
+0

와우. 놀랄 만한. 감사. 내가 어떻게 그렇게 할 수 없니? – vy32

+1

Google 위치 서비스는 https를 지원하므로 가치가 있습니다. – npdoty

+1

이제 저는 정말로 혼란 스럽습니다. 나는 이더넷 주소의 숫자로 이것을 시도했고 그들은 모두 돌아왔다 : { '도시': u'Monterey ','zip ': u'93940', 'country': u'United States ','region ' : u'California ','long ': -121.894676,'street ':'Franklin St ','lat ': 36.600237,'accuracy ': 43000.0} 이것은 나에게 의미가 없습니다. – vy32

관련 문제