`
willvvv
  • 浏览: 333118 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

调用谷歌接口实现基站转经纬度

阅读更多

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大地坐标转经纬度.txt

    地球表面cgcs2000大地坐标转经纬度源码

    java调用WPS或pdfcreator的com接口实现doc转pdf

    本篇将详细讲解如何利用Java调用WPS(金山办公软件)或PDFCreator的COM接口来实现doc到pdf的转换。我们将探讨以下知识点: 1. **什么是COM接口**: COM(Component Object Model)是微软提出的一种组件对象模型,...

    基站转经纬

    ### 基站转经纬知识点解析 #### 一、基础知识介绍 在移动通信领域中,基站(Base Station,简称BS)是提供无线通信服务的关键基础设施之一。为了更好地管理和定位这些基站,通常会将基站的位置信息转换为地理坐标,...

    Java编程调用微信接口实现图文信息推送功能

    主要介绍了Java编程调用微信接口实现图文信息等推送功能,涉及java微信图文信息推送接口调用及相关文件、字符串编码转换相关操作技巧,需要的朋友可以参考下

    度分秒转经纬度

    将度分秒坐标转换为度,把你的度分秒坐标复制放进EXECL表里,再计算下

    java调用wps,实现word转pdf,word转图片等

    总的来说,Java调用WPS实现Word到PDF和Word到图片的转换涉及技术包括:Java编程、API接口调用、文件格式转换、图像处理等。这需要对Java和WPS API有深入理解,同时熟悉文档处理和格式转换的相关知识。通过合理利用...

    C#调用Java接口演示

    本示例主要探讨的是如何使用C#调用Java接口,实现不同编程语言之间的交互。C#和Java都是广泛应用的编程语言,它们各自拥有丰富的库和生态系统,但有时需要在两者之间建立桥梁,以利用各自的优点。本文将详细介绍这一...

    wgs84平面坐标转经纬度

    本话题聚焦于“wgs84平面坐标转经纬度”,这是一个将WGS84坐标系下的平面坐标转换为经纬度坐标的操作。WGS84(World Geodetic System 1984)是一种全球统一的大地坐标系统,广泛用于GPS定位和其他地球科学应用。 ...

    大地坐标转经纬度

    大地坐标转经纬度

    DELPHI 11调用JAVA 接口

    Delphi 11作为一款强大的Windows桌面应用程序开发工具,有时需要与Java环境进行交互,这通常涉及到跨语言调用接口。本篇将详细介绍如何在Delphi 11中调用Java接口,并传递参数及接收返回结果。 1. **JNI(Java ...

    度分秒转经纬度公式示例

    度分秒转经纬度公式示例

    C++库封装JNI接口-实现java调用c++

    总结,C++库封装JNI接口实现Java调用C++涉及的主要步骤包括:声明Java中的本地方法,生成JNI头文件,编写C++实现,编译成库,最后在Java中加载并调用。这个过程需要理解Java和C++之间的数据类型转换,以及如何在两种...

    通过webservice 服务将上海市城建左边做换成经纬度坐标

    2. **调用Web Service**:使用客户端工具或编程语言(如Java、Python、C#等)发送HTTP请求到提供地址转经纬度服务的Web Service接口。请求中通常包含待转换的地址信息。 3. **发送SOAP请求**:请求数据会以SOAP格式...

    java调用C#接口及所涉及到的架包

    在跨平台应用开发中,有时候我们需要在Java环境中调用C#实现的功能,这通常通过Web服务或者中间件来实现。本文将深入探讨如何在Java中调用C#接口,以及涉及的相关技术栈。 1. **Java与C#的互操作性** Java和C#虽然...

    金蝶调用Webservice接口-SOAP

    在IT行业中,集成不同系统和服务是常见的需求,而金蝶作为一款企业级的ERP软件,有时需要调用第三方的Web服务来实现特定功能。本文主要介绍如何使用SOAP(Simple Object Access Protocol)方式来调用Webservice接口...

    webservice接口调用实例

    本实例主要关注的是如何调用Web Service接口,我们将探讨相关的关键知识点。 首先,理解Web Service的基本概念非常重要。它通过SOAP(Simple Object Access Protocol)协议传输数据,使用WSDL(Web Services ...

    java通过url调用接口

    在Java编程中,通过URL调用接口是一种常见的网络通信方式,尤其在Web服务和API交互中扮演着重要角色。这个项目提供了一种方法,通过URL发送请求并接收响应,然后将响应的字符串转换为JSON格式进行处理。接下来,我们...

    Java调用WebService接口的方法

    在Java编程中,调用Web服务接口是一种常见的任务,尤其是当需要实现跨平台通信或集成不同系统时。本文将深入探讨如何使用Java调用WebService接口,以实例分析有参方法Add的使用技巧。 首先,我们需要了解WebService...

    再谈kettle两种循环之-调用http分页接口循环获取数据

    这在需要多次调用同一接口获取大量分页数据时非常有用。 描述中提到的变量运用是Kettle中动态配置的重要组成部分。在处理HTTP分页接口时,我们可以设置全局变量来存储页码、每页大小等参数,然后在循环中动态更新...

    经纬度与高斯坐标及经纬度与UTM坐标互转

    纬度以赤道为0度,向南北两侧各延伸至90度。 2. **高斯平面直角坐标系**:在GIS领域,为了简化计算和避免投影误差的积累,通常采用分带投影,即高斯-克吕格投影。它将地球表面划分成6°宽的带,每带内使用平面直角...

Global site tag (gtag.js) - Google Analytics