5

Google MapsGeolocationAPIを利用しようとしています。セルタワーのみを含むJSONファイルをにPOSTします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から適切なデータを取得する際に問題が発生します。

ApacheHTTPClientおよび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は、一度に1つのセルタワーのみをサポートしますか?ある種の信号伝搬とすべてのタワーにわたる距離推定を使用することで、これよりも賢いと思いました。

4

2 に答える 2

2

マッピングAPIサブスクリプションに関するGoogleとの最近の通信で、Geo-locationAPIに関する一般的な情報を求めました。セルタワー信号の複雑な三角測量は行われないことがわかりました。

于 2013-10-01T11:09:06.693 に答える
1

有効と見なされる最初のものを使用するだけです。参照:http ://code.google.com/p/gmaps-api-issues/issues/detail?id = 6929

于 2015-03-03T17:31:22.667 に答える