如何将位置区号转换为地址?

时间:2018-02-03 14:47:22

标签: java android location gsm telephonymanager

我想获取塔位置,为此我使用的是TelephonyManager,我正在获取位置区域代码,但我希望转换为字符串以显示位置。

    TelephonyManager telephonyManager = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    GsmCellLocation cellLocation = (GsmCellLocation)telephonyManager.getCellLocation();

    int cellid= cellLocation.getCid();
    int celllac = cellLocation.getLac();


    Log.d("CellLocation", cellLocation.toString());
    Log.d("GSM CELL ID",  String.valueOf(cellid));
    Log.d("GSM Location Code", String.valueOf(celllac));

以下是代码,我在哪里获取位置区域代码,如何将其转换为字符串?

请帮助谢谢..

1 个答案:

答案 0 :(得分:2)

LAC代码只是区域ovf覆盖范围位置的运营商标识符 - 没有算法等可以从它转换为GPS位置或街道地址。

存在包含映射单元ID到位置的数据库 - 例如,这是最着名的之一:

您需要记住这些只是查找服务,因此如果数据库中的信息丢失或错误,您将无法获得正确答案 - 即它不是基于LAC的任何算法映射。

还有一个Google MAP的API,可让您传递移动基站信息并接收GPS位置作为回应:

这是一项Web服务 - 您发送HTTPS POST消息并获得回复。在撰写本文时,基于上述链接的请求和响应的示例JSON使其非常清楚如何使用它:

请求JSON:

{
  "homeMobileCountryCode": 310,
  "homeMobileNetworkCode": 410,
  "radioType": "gsm",
  "carrier": "Vodafone",
  "considerIp": "true",
  "cellTowers": [
    {
      "cellId": 42,
      "locationAreaCode": 415,
      "mobileCountryCode": 310,
      "mobileNetworkCode": 410,
      "age": 0,
      "signalStrength": -60,
      "timingAdvance": 15
    }
  ]
}

回应JSON:

{
  "location": {
    "lat": 51.0,
    "lng": -0.1
  },
  "accuracy": 1200.4
}

您需要API密钥才能使用该服务 - 请参阅链接以获取详细信息。