Почему Google Geolocation API считает, что я всегда в Монтерее, штат Калифорния? - PullRequest
0 голосов
/ 17 января 2011

После запроса и получения необычной маленькой программы, которая позволяет мне превращать любой MAC-адрес 802.11 Ethernet в геолокацию с помощью API геолокации Google, я с сожалением узнаю, что Google считает, что я всегда в Монтерей, Калифорния, когда я использую его с одного компьютера, и в Ньюпорт-Бич, когда я использую его с другого.

Вот пересмотренная версия программы, которую я использую:

<?php
$mac = $_SERVER['argv'][1];                                                                     
$postData = '{
    "version": "1.1.0",
    "request_address":"true",
    "wifi_towers": [{
        "mac_address": "' . $mac . '"
    }]
}';                                                                                             

$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)
);                                                                                              

$response = json_decode($response, true);                                                       
$loc = $response['location'];                                                                   
$addr = $loc['address'];                                                                        

echo "Geolocate $mac:\n";                                                                       
echo $addr['street'],"\n";                                                                      
echo $addr['city'],", ",$addr['region']," ",$addr['postal_code'],"\n";                          
echo "Lat/Lon: ",$loc['latitude'],",",$loc['longitude'],"\n";                                   

И вот результаты, которые я получаю:

% php geolocate.php 00:E0:6F:90:A1:71
Geolocate 00:E0:6F:90:A1:71:
W Franklin St
Monterey, California 93940
Lat/Lon: 36.600237,-121.894676

% php geolocate.php 00:D0:25:8A:79:14
Geolocate 00:D0:25:8A:79:14:
W Franklin St
Monterey, California 93940
Lat/Lon: 36.600237,-121.894676

% php geolocate.php 00-D0-25-8A-79-14
Geolocate 00-D0-25-8A-79-14:
W Franklin St
Monterey, California 93940
Lat/Lon: 36.600237,-121.894676
% 

Вот на другой машине:

$ php geolocate.php 00:D0:25:8A:79:14
Geolocate 00:D0:25:8A:79:14:
Via Lido
Newport Beach, California 92663
Lat/Lon: 33.61891,-117.928946
$ php geolocate.php 00:E0:6F:90:A1:71
Geolocate 00:E0:6F:90:A1:71:
Via Lido
Newport Beach, California 92663
Lat/Lon: 33.61891,-117.928946

Нет смысла, что каждый адрес Ethernet, который я пытаюсь найти, находится на улице W Franklin в Монтерее. По умолчанию это связано с моим IP-адресом?

Ответы [ 2 ]

2 голосов
/ 17 января 2011

Это локализация Wi-Fi, и она далека от точности , когда не подключен с помощью Wi-Fi . Здесь вы указываете мое местоположение в центре Парижа, Франция, и машина, которую я использовал, находится на востоке Парижа и связана с DSL.

См. http://www.google.com/support/mobile/bin/answer.py?hl=en&answer=81873

0 голосов
/ 17 января 2011

В соответствии с вопросом, который вы имеете в виду, API геолокации Google работает путем поиска MAC-адреса беспроводной точки доступа, а не MAC-адреса вашего устройства.Звучит так, как будто это просто запрос к базе данных, которую они собрали из MAC-адресов AP и соответствующих координат.

...