Geolocation 为什么谷歌';s地理定位API认为我';我总是在加利福尼亚州的蒙特利?

Geolocation 为什么谷歌';s地理定位API认为我';我总是在加利福尼亚州的蒙特利?,geolocation,Geolocation,在一个奇特的小程序允许我使用谷歌的地理定位API将任何802.11以太网MAC地址转换为地理定位后,我很难过地发现,当我在一台计算机上使用它时,谷歌认为我总是在加利福尼亚州蒙特利,当我在另一台计算机上使用它时,我总是在纽波特海滩 下面是我正在使用的程序的修订版本: <?php $mac = $_SERVER['argv'][1]; $postData =

在一个奇特的小程序允许我使用谷歌的地理定位API将任何802.11以太网MAC地址转换为地理定位后,我很难过地发现,当我在一台计算机上使用它时,谷歌认为我总是在加利福尼亚州蒙特利,当我在另一台计算机上使用它时,我总是在纽波特海滩

下面是我正在使用的程序的修订版本:

<?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: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

我尝试的每个以太网地址都在蒙特利的W富兰克林街,这是毫无意义的。它是否默认为与我的IP地址相关的内容?

这是wifi定位,当不使用wifi连接时,它远远不准确。在这里,你的脚本把我的位置放在法国巴黎的中部,我用的机器位于巴黎东部,用DSL连接。


请参见

根据您提到的问题,谷歌地理定位API的工作原理是查找无线接入点的MAC地址,而不是您机器的MAC地址。听起来好像只是在查询他们收集的AP MAC地址和相应坐标的数据库。

可能是这样。您是否尝试过更改(或欺骗)您的MAC地址?我的MAC地址不是通过TCP连接发送的,因此这不会起任何作用。是的,我知道这不是针对我的MAC地址。我用的是我的Wi-Fi路由器的MAC地址。如果你认为这个位置有一个大的错误,比如+/-8Km的话,对我来说。所以我的程序没有问题,只是我的数据。我使用的MAC地址实际上是wifi地址。
$ 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