Cell2GPSUtil.java,最近项目中用到的,记录一下。
package your.package;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class Cell2GPSUtil {
private static final Logger Log = LoggerFactory
.getLogger(Cell2GPSUtil.class);
private static final String GOOGLE_API_KEY = "YOURS";
/**
* 通过google接口基站转经纬度 way 2: use JSONObject to build post data
*
* @param towers
* @return
*/
public static Map<String, Double> cell2GPSByGoogle(
List<Map<String, String>> towers) {
Map<String, Double> result = new HashMap<String, Double>();
StringBuffer sb = new StringBuffer();
String cellId = null;
String LAC = null;
String MCC = null;
String MNC = null;
for (Map<String, String> tower : towers) {
cellId = tower.get("cellId");
LAC = tower.get("LAC");
MCC = tower.get("MCC");
MNC = tower.get("MNC");
if (MCC == null || MNC == null) {
continue;
}
}
try {
// 组装JSON查询字符串
JSONObject holder = new JSONObject();
holder.put("version", "1.1.0");
holder.put("host", "maps.google.com");
holder.put("access_token", GOOGLE_API_KEY);
holder.put("address_language", "zh_CN");
// holder.put("request_address", true);
JSONArray array = new JSONArray();
JSONObject data = new JSONObject();
data.put("cell_id", cellId); // 25070
data.put("location_area_code", LAC);// 4474
data.put("mobile_country_code", MCC);// 460
data.put("mobile_network_code", MNC);// 0
array.put(data);
holder.put("cell_towers", array);
// 创建连接,发送请求并接受回应
DefaultHttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost("http://www.google.com/loc/json");
StringEntity se = new StringEntity(holder.toString());
post.setEntity(se);
HttpResponse resp = client.execute(post);
HttpEntity entity = resp.getEntity();
BufferedReader br = new BufferedReader(new InputStreamReader(
entity.getContent()));
String line = br.readLine();
while (line != null) {
sb.append(line);
line = br.readLine();
}
JSONObject jo = new JSONObject(sb.toString());
if (jo.has("location")
&& jo.getJSONObject("location").has("latitude")
&& jo.getJSONObject("location").has("longitude")) {
result.put("lat",
jo.getJSONObject("location").getDouble("latitude"));
result.put("log",
jo.getJSONObject("location").getDouble("longitude"));
}
} catch (Exception e) {
Log.error("cell2GPSByGoogle Exception" + e.getMessage());
}
Log.debug("cellId -> GPS: cellId=" + cellId + ",LAC=" + LAC + ",MNC="
+ MNC + ",MCC=" + MCC + " => " + result);
return result;
}
/**
* @param args
*/
public static void main(String[] args) {
List<Map<String, String>> towers = new ArrayList<Map<String, String>>();
Map<String, String> towerMap = new HashMap<String, String>();
towerMap.put("cellId", "3620");
towerMap.put("LAC", "9340");
towerMap.put("MCC", "460");
towerMap.put("MNC", "0"); // is 0, not 01
towers.add(towerMap);
Map<String, Double> gps = Cell2GPSUtil.cell2GPSByGoogle(towers);
System.out.println(gps);
}
}
分享到:
相关推荐
本文将详细介绍一个使用Visual C++实现的大地坐标转经纬度坐标的源码。大地坐标系统(也称为高斯-克吕格坐标系统)是地理测绘中常用的一种坐标系,而经纬度坐标则是我们日常生活中更常见、更直观的定位方式。了解...
地球表面cgcs2000大地坐标转经纬度源码
本篇将详细讲解如何利用Java调用WPS(金山办公软件)或PDFCreator的COM接口来实现doc到pdf的转换。我们将探讨以下知识点: 1. **什么是COM接口**: COM(Component Object Model)是微软提出的一种组件对象模型,...
### 基站转经纬知识点解析 #### 一、基础知识介绍 在移动通信领域中,基站(Base Station,简称BS)是提供无线通信服务的关键基础设施之一。为了更好地管理和定位这些基站,通常会将基站的位置信息转换为地理坐标,...
主要介绍了Java编程调用微信接口实现图文信息等推送功能,涉及java微信图文信息推送接口调用及相关文件、字符串编码转换相关操作技巧,需要的朋友可以参考下
将度分秒坐标转换为度,把你的度分秒坐标复制放进EXECL表里,再计算下
总的来说,Java调用WPS实现Word到PDF和Word到图片的转换涉及技术包括:Java编程、API接口调用、文件格式转换、图像处理等。这需要对Java和WPS API有深入理解,同时熟悉文档处理和格式转换的相关知识。通过合理利用...
本话题聚焦于“wgs84平面坐标转经纬度”,这是一个将WGS84坐标系下的平面坐标转换为经纬度坐标的操作。WGS84(World Geodetic System 1984)是一种全球统一的大地坐标系统,广泛用于GPS定位和其他地球科学应用。 ...
简单的javascript的地方坐标与经纬度坐标间的转换代码
坐标转换,西安80,坐标转经纬度
2. **调用Web Service**:使用客户端工具或编程语言(如Java、Python、C#等)发送HTTP请求到提供地址转经纬度服务的Web Service接口。请求中通常包含待转换的地址信息。 3. **发送SOAP请求**:请求数据会以SOAP格式...
### Python调用WEBSERVICE接口知识点详解 #### 一、基础知识概述 1. **Web Service**:一种跨编程语言和操作系统平台的远程调用技术,它通过HTTP协议提供服务,可以被任何其他系统调用。 2. **SOAP(Simple Object...
在IT行业中,集成不同系统和服务是常见的需求,而金蝶作为一款企业级的ERP软件,有时需要调用第三方的Web服务来实现特定功能。本文主要介绍如何使用SOAP(Simple Object Access Protocol)方式来调用Webservice接口...
在Java编程中,调用Web服务接口是一种常见的任务,尤其是当需要实现跨平台通信或集成不同系统时。本文将深入探讨如何使用Java调用WebService接口,以实例分析有参方法Add的使用技巧。 首先,我们需要了解WebService...
这在需要多次调用同一接口获取大量分页数据时非常有用。 描述中提到的变量运用是Kettle中动态配置的重要组成部分。在处理HTTP分页接口时,我们可以设置全局变量来存储页码、每页大小等参数,然后在循环中动态更新...
本文将深入探讨如何使用Java编写Google基站定位代码,以及相关的技术要点。 首先,基站定位的基础是通过获取到手机连接的基站信息,包括基站的ID(Cell ID)、LAC(Location Area Code)和信号强度等数据。这些信息...
Android Studio 调用 Restful WCF 接口需要使用 HttpURLConnection 和线程来实现异步网络访问,并需要在 AndroidManifest.xml 中加入网络权限,否则将无法访问网络。同时,需要注意网络访问的超时时间和缓存策略,以...
本教程将深入探讨如何在Kettle中使用动态参数调用HTTP和POST接口,实现高效的数据交互。 一、Kettle简介 Kettle是一款由社区驱动的ETL工具,它以图形化的方式设计和执行数据转换。Kettle的作业(Job)和转换...
### ORACLE与C语言通用调用接口的实现 #### 概述 数据库调用接口作为上层应用与数据库之间的桥梁,在软件开发过程中扮演着至关重要的角色。为了提高系统的安全性、准确性和开发效率,通常需要设计专门的数据库调用...
为了实现精确的位置服务,如GPS定位、紧急呼叫定位等,我们需要获取基站的相关信息,其中包括逻辑接入控制区(Location Area Code,LAC)和小区识别码(Cell ID),以及基站的经纬度、所在国家、省会、城市和详细...