`
willvvv
  • 浏览: 334148 次
  • 性别: 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);
	}

}
分享到:
评论

相关推荐

    大地坐标转经纬度坐标visual C++源码

    本文将详细介绍一个使用Visual C++实现的大地坐标转经纬度坐标的源码。大地坐标系统(也称为高斯-克吕格坐标系统)是地理测绘中常用的一种坐标系,而经纬度坐标则是我们日常生活中更常见、更直观的定位方式。了解...

    地球表面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有深入理解,同时熟悉文档处理和格式转换的相关知识。通过合理利用...

    wgs84平面坐标转经纬度

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

    albers投影坐标转经纬度坐标(javascript)

    简单的javascript的地方坐标与经纬度坐标间的转换代码

    坐标转换,坐标转经纬度

    坐标转换,西安80,坐标转经纬度

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

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

    python调用WEBSERVICE接口

    ### Python调用WEBSERVICE接口知识点详解 #### 一、基础知识概述 1. **Web Service**:一种跨编程语言和操作系统平台的远程调用技术,它通过HTTP协议提供服务,可以被任何其他系统调用。 2. **SOAP(Simple Object...

    金蝶调用Webservice接口-SOAP

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

    Java调用WebService接口的方法

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

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

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

    google基站定位JAVA代码

    本文将深入探讨如何使用Java编写Google基站定位代码,以及相关的技术要点。 首先,基站定位的基础是通过获取到手机连接的基站信息,包括基站的ID(Cell ID)、LAC(Location Area Code)和信号强度等数据。这些信息...

    Android Studio调用RestfulWCF接口

    Android Studio 调用 Restful WCF 接口需要使用 HttpURLConnection 和线程来实现异步网络访问,并需要在 AndroidManifest.xml 中加入网络权限,否则将无法访问网络。同时,需要注意网络访问的超时时间和缓存策略,以...

    数据抽取-Kettl动态参数调用HTTP、POST接口

    本教程将深入探讨如何在Kettle中使用动态参数调用HTTP和POST接口,实现高效的数据交互。 一、Kettle简介 Kettle是一款由社区驱动的ETL工具,它以图形化的方式设计和执行数据转换。Kettle的作业(Job)和转换...

    ORACLE与C语言通用调用接口的实现

    ### ORACLE与C语言通用调用接口的实现 #### 概述 数据库调用接口作为上层应用与数据库之间的桥梁,在软件开发过程中扮演着至关重要的角色。为了提高系统的安全性、准确性和开发效率,通常需要设计专门的数据库调用...

    获取移动基站LAC CELLID 以及基站经纬度,国家,省会,城市,详细地址代码

    为了实现精确的位置服务,如GPS定位、紧急呼叫定位等,我们需要获取基站的相关信息,其中包括逻辑接入控制区(Location Area Code,LAC)和小区识别码(Cell ID),以及基站的经纬度、所在国家、省会、城市和详细...

Global site tag (gtag.js) - Google Analytics