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);
}
}
分享到:
相关推荐
地球表面cgcs2000大地坐标转经纬度源码
很好用,直接把大地坐标输进去就行,代码里面直接智能转换,代码结构清晰,而且有注释。
主要介绍了Java编程调用微信接口实现图文信息等推送功能,涉及java微信图文信息推送接口调用及相关文件、字符串编码转换相关操作技巧,需要的朋友可以参考下
NULL 博文链接:https://hacker507.iteye.com/blog/1458790
android 百度地图将地址转换成经纬度
基站转经纬,百度相关的基站转经纬数据,基站代码转换成经纬度
简单的javascript的地方坐标与经纬度坐标间的转换代码
大地坐标转经纬度
将度分秒坐标转换为度,把你的度分秒坐标复制放进EXECL表里,再计算下
坐标转换,西安80,坐标转经纬度
word编辑,文档修改,表格操作,ppt演示,通通通过javaj接口调用
ip转经纬度,目前的IP地址只有2013年之前的IP地址收集,IP地址可能不是很全
度分秒转经纬度公式示例
高德地图经纬度转地理位置,地理位置转经纬度,json解析
由MaxMind免费版ip地址转经纬度数据库,可以用作全球数据热力图。
使用方法:双击软件弹出对话框提示是否需要新建模板表格,如果不需要则回车继续弹出拾取模板对话框拾取模板点击确定执行程序
易语言调用API实现编码转换源码,调用API实现编码转换,ANSI转UNICODE,UNICODE转UTF8
金蝶调用第三方webservice接口以soap方式实现,包括创建服务service、DIspatch、SOAPMessage、QName、封装数据、Dispatch传递消息、消息转换为doc对象、调用结果判断等
java调用科大讯为语音转文字接口,完成语音转化成自然语言,springboot实现语音接口转化的实例代码
delphi调用java类,转换包jni.pas J2SDK v 1.4 DELPHI开发JNI必备 jni.pas