2

我想使用mac地址获取设备的经度和纬度,而不是它没有返回任何值。

我已经激活了我的 Google Geolocation API 并启用了计费。请帮忙。

<?php           
        $mac = "E4:D5:3D:E4:05:BF"; 
        //encode the data in JSON   
    $wifiAccessPoints = array("macAddress"=>$mac);
    $wifiAccessPoints = json_encode($wifiAccessPoints);

    $API_key = "AIzaSyApOf.................";

        $url  = "https://www.googleapis.com/geolocation/v1/geolocate?key=$API_key";



        $client = curl_init($url);
        //send the request to resource
        curl_setopt($client, CURLOPT_CUSTOMREQUEST, "POST");
        curl_setopt($client, CURLOPT_HEADER, false);
        curl_setopt($client, CURLOPT_POSTFIELDS, $wifiAccessPoints);
        curl_setopt($client, CURLOPT_RETURNTRANSFER,true);

        curl_setopt($client, CURLOPT_HTTPHEADER,array("Content-type: application/json", "Content-Length".strlen($wifiAccessPoints)));

        curl_setopt($client,CURLOPT_POST,true);


        //get response from request.
        $response = curl_exec($client);

        //decode format response
        //$result = json_decode($response);
        $status = curl_getinfo($client, CURLINFO_HTTP_CODE);

        echo $status."<br>";

        echo $response."<br>";

        ?>     
4

1 回答 1

0

返回的错误表明您的请求格式正确,但 API 找不到它的地理位置。API 文档对您的结果有这样的说法:

原因:notFound
域:geolocation
状态码:404
描述:请求有效,但没有返回结果。

因此,您似乎成功地执行了您的请求,但 Google 并不总是能够告诉您特定 WiFi 接入点的位置(不可能指望他们都知道它们)。

该文件还指出

请求正文的 wifiAccessPoints 数组必须包含两个或多个WiFi 接入点对象。mac地址是必需的;所有其他字段都是可选的。

看起来您只有一个接入点,通过 IP 查找可能是准确的。该文档包含大量有关如何重新格式化输入 JSON 的信息。

于 2015-08-04T15:34:41.247 回答