我们可以使用谷歌纵横APP用于发现位置的相同API吗?

时间:2012-10-13 08:50:15

标签: cellid

我有一个发送给我的设备 移动国家代码(MCC) 移动网络代码(MNC) 位置区号(LAC) 和 小区ID 我所在地区最近的每个移动塔楼。谷歌纵横APP正在使用此信息来检测我的位置。我想创建自己的应用程序,可以使用相同的技术,但我找不到任何谷歌API描述。

为了我的目的,有可能使用OpenCellID,但我居住的国家/地区没有可用的CellID。

有些帖子中有过时的API链接,我需要https://developers.google.com/gears/http://www.google.com/glm/mmap,但似乎它们都不再有效。

2 个答案:

答案 0 :(得分:0)

您可以尝试使用google Maps api:

https://developers.google.com/maps/?hl=es

他们有一个选项&sensor=true来检测您是否尝试从设备获取纬度和经度。

答案 1 :(得分:0)

这是一个PHP脚本,它接受参数mccmnclaccid,如果结果可用则返回latitude:longitude,{{1如果没有找到结果。这使用了您提到的相同Google API。

NOT_FOUND

将代码保存为php文件(我在下面的示例中使用了locate.php),将其上传到您的Web主机,然后您可以进行以下查询: <?php $data = "\x00\x0e". "\x00\x00\x00\x00\x00\x00\x00\x00". "\x00\x00". "\x00\x00". "\x00\x00". "\x1b". "\x00\x00\x00\x00". "\x00\x00\x00\x00". "\x00\x00\x00\x03". "\x00\x00". "\x00\x00\x00\x00". "\x00\x00\x00\x00". "\x00\x00\x00\x00". "\x00\x00\x00\x00". "\xff\xff\xff\xff". "\x00\x00\x00\x00" ; $mcc = substr("00000000".dechex($_REQUEST["mcc"]),-8); $mnc = substr("00000000".dechex($_REQUEST["mnc"]),-8); $lac = substr("00000000".dechex($_REQUEST["lac"]),-8); $cid = substr("00000000".dechex($_REQUEST["cid"]),-8); $init_pos = strlen($data); $data[$init_pos - 38]= pack("H*",substr($mnc,0,2)); $data[$init_pos - 37]= pack("H*",substr($mnc,2,2)); $data[$init_pos - 36]= pack("H*",substr($mnc,4,2)); $data[$init_pos - 35]= pack("H*",substr($mnc,6,2)); $data[$init_pos - 34]= pack("H*",substr($mcc,0,2)); $data[$init_pos - 33]= pack("H*",substr($mcc,2,2)); $data[$init_pos - 32]= pack("H*",substr($mcc,4,2)); $data[$init_pos - 31]= pack("H*",substr($mcc,6,2)); $data[$init_pos - 24]= pack("H*",substr($cid,0,2)); $data[$init_pos - 23]= pack("H*",substr($cid,2,2)); $data[$init_pos - 22]= pack("H*",substr($cid,4,2)); $data[$init_pos - 21]= pack("H*",substr($cid,6,2)); $data[$init_pos - 20]= pack("H*",substr($lac,0,2)); $data[$init_pos - 19]= pack("H*",substr($lac,2,2)); $data[$init_pos - 18]= pack("H*",substr($lac,4,2)); $data[$init_pos - 17]= pack("H*",substr($lac,6,2)); $data[$init_pos - 16]= pack("H*",substr($mnc,0,2)); $data[$init_pos - 15]= pack("H*",substr($mnc,2,2)); $data[$init_pos - 14]= pack("H*",substr($mnc,4,2)); $data[$init_pos - 13]= pack("H*",substr($mnc,6,2)); $data[$init_pos - 12]= pack("H*",substr($mcc,0,2)); $data[$init_pos - 11]= pack("H*",substr($mcc,2,2)); $data[$init_pos - 10]= pack("H*",substr($mcc,4,2)); $data[$init_pos - 9]= pack("H*",substr($mcc,6,2)); if ((hexdec($cid) > 0xffff) && ($mcc != "00000000") && ($mnc != "00000000")) { $data[$init_pos - 27] = chr(5); } else { $data[$init_pos - 24]= chr(0); $data[$init_pos - 23]= chr(0); } $context = array ( 'http' => array ( 'method' => 'POST', 'header'=> "Content-type: application/binary\r\n" . "Content-Length: " . strlen($data) . "\r\n", 'content' => $data ) ); $xcontext = stream_context_create($context); $str=file_get_contents("http://www.google.com/glm/mmap",FALSE,$xcontext); if (strlen($str) > 10) { $lat_tmp = unpack("l",$str[10].$str[9].$str[8].$str[7]); $lon_tmp = unpack("l",$str[14].$str[13].$str[12].$str[11]); $lon = $lon_tmp[1]/1000000; $lat = $lat_tmp[1]/1000000; echo $lat.":".$lon; } else{echo "NOT_FOUND";} ?> 然后,您可以解析获得的响应以获取纬度和经度信息。