【问题标题】:Google Maps Geolocation API only ever returning location of 1st tower in my arrayGoogle Maps Geolocation API 只返回我阵列中第一个塔的位置
【发布时间】:2013-01-11 14:55:07
【问题描述】:

我正在尝试使用 Google Maps Geolocation API。我正在向https://www.googleapis.com/geolocation/v1/geolocate?key=MYKEY 发布一个仅包含手机信号塔的 JSON 文件。

示例 JSON:

{
    "cellTowers":[
    {
        "cellId":65535,
        "locationAreaCode":5160,
        "mobileCountryCode":234,
        "mobileNetworkCode":10,
        "signalStrength":-53
    },
    {
        "cellId":34177,
        "locationAreaCode":5160,
        "mobileCountryCode":234,
        "mobileNetworkCode":10,
        "signalStrength":-55
    }
]}

这已被验证为正确的 JSON。但是,我在从 API 中获取体面的数据时遇到问题。

我已经使用 Apache HTTPClient 和 HTTPPost 库在 Java 中实现了 POST。我得到了一个有效的回复,但它始终是 cellTowers 数组中第一个蜂窝塔的 LAT、LNG。就好像 API 正在读取第一个蜂窝塔,获取位置然后忽略其余部分。当然,我已经通过反转和改组列表来验证这是行为,并且每次响应都会更改到第一个塔的位置。 这是我的代码:

HttpParams httpParams = new BasicHttpParams();
ConnRouteParams.setDefaultProxy(httpParams, new HttpHost(PROXY_HOST, PROXY_PORT));
HttpConnectionParams.setConnectionTimeout(httpParams, TIMEOUT_MILLISEC);
HttpConnectionParams.setSoTimeout(httpParams, TIMEOUT_MILLISEC);

HttpClient client = new DefaultHttpClient(httpParams);
HttpPost request = new HttpPost(GOOGLE_GEOLOCATION_API);
request.setHeader("Content-type", "application/json");

try {
    StringEntity se = new StringEntity(json);
    request.setEntity(se);

    HttpResponse response = client.execute(request);
    if(response!=null){
        String jsonResult = EntityUtils.toString(response.getEntity());
        GeolocationResponse geolocationResponse = gson.fromJson(jsonResult, GeolocationResponse.class);

        logger.info(jsonResult);
        logger.info("Est. Location: " + geolocationResponse.toString());
    }
} catch (Exception e) {
    e.printStackTrace();
}

Geolocation API 是否一次只支持一个手机信号塔?我认为它会比这更聪明,使用某种信号传播和跨所有塔的距离估计。

【问题讨论】:

  • 你能贴出你的完整代码吗? . .
  • 感谢收看。我会挖掘出来,已经有一段时间了......自从这篇文章以来,我认为我决定 API 也将我的 IP 用于计算,这不是我想要的,因为我有与我当前位置无关的手机信号塔数据.
  • 这是挂毯应用程序的一部分。我已经提取了相关部分并放入了一个普通的控制台应用程序:docs.google.com/file/d/0B6NEPPxoegFQbTJrQ0JWT1lRNWs/…

标签: java google-maps


【解决方案1】:

在最近与 Google 就我们的地图 API 订阅进行沟通时,我询问了有关 Geo-location API 的一些一般信息。事实证明,它不会对信号塔信号进行任何复杂的三角测量。

【讨论】:

  • 真可惜。我也希望 Google 提供更智能的解决方案……事实上,我在看到 3 座塔中的第一个被定位后才来到这里。 OpenCellID / Unwired Labs 等其他服务会考虑所有信号塔,甚至包括信号强度(如果您提供信号强度)并提供更准确的位置。
【解决方案2】:

他们只使用第一个被认为有效的。参考:http://code.google.com/p/gmaps-api-issues/issues/detail?id=6929

【讨论】:

    猜你喜欢
    • 2014-11-15
    • 1970-01-01
    • 2016-09-03
    • 2016-10-22
    • 2018-09-08
    • 2013-07-15
    • 2017-12-29
    • 2013-04-14
    • 2011-06-24
    相关资源
    最近更新 更多