我正在尝试使用Google Maps Geolocation API。我正在将仅包含单元格塔的JSON文件发布到https://www.googleapis.com/geolocation/v1/geolocate?key=MYKEY
。
示例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& amp;来实现了Java中的POST。 HTTPPost库。我得到了有效的回复,但它始终是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一次只支持一个手机信号塔吗?我认为它比这更聪明,在所有塔上使用某种信号传播和距离估计。
答案 0 :(得分:1)
在最近与Google就我们的地图API订阅进行的沟通中,我询问了有关Geo-location API的一些一般信息。事实证明它不会对细胞塔信号进行任何复杂的三角测量。
答案 1 :(得分:0)
他们只使用第一个被认为有效的。参考:http://code.google.com/p/gmaps-api-issues/issues/detail?id=6929