java - Google GeoLocation API 的问题

标签 java google-maps google-maps-api-3 geolocation

我正在尝试使用 Google GeoLocation API 根据 WiFi 接入点详细信息获取位置坐标。问题是我总是为每个请求返回相同的坐标。 我将 JSON 请求传递到的网址是:https://www.googleapis.com/geolocation/v1/geolocate?key=MY_API

我传递的 JSON 数据是:

{
    "radioType":"wcdma",
    "homeMobileNetworkCode":"0",
    "homeMobileCountryCode":"234",
    "carrier":"BT",
    "wifiAccessPoints":
    {
        "signalStrength":-73,
        "age":0,
        "macAddress":"BSSID HERE",
        "channel":6
    }
}

我来自英国,这就是我将 MNC 设置为 234 的原因。此外,我只能使用 wifi 来提供定位服务,因为当前配置中没有安装 GPS。 我总是从 Google 收到的回复是:

{ 
    "location": 
    {  
        "lat": 51.517098999999995,  
        "lng": -0.146084 
    }, 
    "accuracy": 18000.0
}

我收到了针对我的所有请求的响应,无论我作为请求传递的任何 BSSID 是什么。你能告诉我我在这里做错了什么吗?我使用 Java 将此数据作为 POST 请求传递(使用列出的标准 HTTP 连接 here )

最佳答案

如果您查看 Google 地理定位 API 文档: https://developers.google.com/maps/documentation/business/geolocation/#cell_tower_object

您可以看到“cellTowers”和“wifiAccessPoints”部分设置为使用 JSON 数组。

因此,要修复您的示例,它应该如下所示:

{
    "radioType":"wcdma",
    "homeMobileNetworkCode":"0",
    "homeMobileCountryCode":"234",
    "carrier":"BT",
    "wifiAccessPoints":
    [{
        "signalStrength":-73,
        "age":0,
        "macAddress":"BSSID HERE",
        "channel":6
    }]
}

关于java - Google GeoLocation API 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17778791/

相关文章:

android - 如何删除android谷歌地图中的蓝点?

java - JPA DescriptorEventAdapter ChangeSet 始终为空

java - AssertJ - 是否有更流畅的方式来提取/映射值?

java - 我如何从缓冲读取器输入字符串?

flutter - 如何在谷歌地图 Flutter 中动态绘制多边形

android - Google api key非法操作

ios - 收到 GMSServicesException 错误

java - ArrayAdapter 帮助,使用从方法返回的字符串数组填充

javascript - Google map - 从 Google map 获取省份轮廓

javascript - 从数据对象设置多个标记 Google map