关闭

调用高德的接口,地理位置和经纬度相互转换

标签: 高德经纬度位置
1674人阅读 评论(0) 收藏 举报
分类:

高德官方有详细的接口调用文档:http://lbs.amap.com/api/webservice/guide/api/georegeo

我是在java项目中使用,下面以地理位置得到经纬度来举例。

首先,你需要注册高德的账号,并且获取一个key:http://lbs.amap.com/dev/key/app;

public class AddressLngLatExchange {
	
	private static final String KEY = "0*******16d8db3a0e622fccca24f9";
	private static final String OUTPUT = "JSON";
	private static final String GET_LNG_LAT_URL = "http://restapi.amap.com/v3/geocode/geo";
	
	private static final Logger LOGGER = Logger.getLogger(AddressLngLatExchange.class);

	public static Pair getLngLatFromOneAddr(String address){
		if(StringUtils.isBlank(address)) {
			LOGGER.error("地址(" + address + ")为null或者空");
			return null;
		}
		Map params = new HashMap();
    	params.put("address", address);
    	params.put("output", OUTPUT);
    	params.put("key", KEY);
    	String result = HttpclientUtil.post(params, GET_LNG_LAT_URL);
    	Pair pair = null;
    	JSONObject jsonObject = JSONObject.fromObject(result);
    	//拿到返回报文的status值,高德的该接口返回值有两个:0-请求失败,1-请求成功;
    	int status = Integer.valueOf(jsonObject.getString("status"));
    	if(status == 1) {
    		JSONArray jsonArray = jsonObject.getJSONArray("geocodes");
    		for(int i = 0; i < jsonArray.size(); i++) {
    			JSONObject json = jsonArray.getJSONObject(i);
    			String lngLat = json.getString("location");
    			String[] lngLatArr = lngLat.split(",");
    			//经度
    			BigDecimal longitude = new BigDecimal(lngLatArr[0]);
//    			System.out.println("经度" + longitude);
    			//纬度
    			BigDecimal latitude = new BigDecimal(lngLatArr[1]);
//    			System.out.println("纬度" + latitude);
    			pair = new MutablePair(longitude, latitude);
    		}
    	} else {
    		String errorMsg = jsonObject.getString("info");
    		LOGGER.error("地址(" + address + ")" + errorMsg);
    	}
    	return pair;
	}

备注:1)此处用Pair类型返回值,只是个人偏好,这种返回方式无法返回高德的错误信息,不过在试验过程中,发现就算是胡乱写的地址,高德也会返回OK,只是经纬度为空,可能高德的错误信息指的是高德的程序异常,所以返回不OK的概率就比较小了,顾在此处仅记录在日志里。
2)HTTP的工具类可以在网上找,给一个参考的:http://lxy19791111.iteye.com/blog/341409
3)如有需要改进的地方,欢迎指正
1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

android 高德地图定位获取经纬度

android 高德地图定位获取经纬度 之前开发定位都是集成百度的,领导说要用高德的,没办法干吧,官方的文档太详细了看着真累。 我们得先去官网注册开发者账号,创建应用,填写自己项目的包名和SHA1...
  • huanghui525
  • huanghui525
  • 2017-04-21 18:05
  • 2944

android下利用高德地图获取经纬度等定位信息

第 1 步,配置AndroidManifest.xml 首先,声明Service组件 请在application标签中声明service组件,每个app拥有自己单独的定位ser...
  • hiberatejss
  • hiberatejss
  • 2016-09-05 16:25
  • 4860

百度地图 经纬度和地理位置的转换

最近项目中用到了,经纬度转为地理位置,特列一下, 第一步:下载百度的sdk 申请key 在AndroidManifest.xml 中配置 第二步: 就可以使
  • woaixuexi1209
  • woaixuexi1209
  • 2015-08-16 17:02
  • 2254

高德地图根据地名获取经纬度

本来打算接着在好好的睡过一个美好的周末,最后想了下觉得有那么一点浪费时间,虽然平时都是这么过得,所以最后还是跑来公司敲代码, 最近有一点小励志,哈哈哈。还是继续昨天的demo测试,今天我打算继续添加新...
  • dudu_12138
  • dudu_12138
  • 2017-04-08 14:24
  • 3697

使用高德获取经纬度

  • 2015-08-06 14:02
  • 5.46MB
  • 下载

java api从高德地图获取某个位置的经纬度

1、代码展示 import com.fasterxml.jackson.databind.JsonNode; import com.ning.http.client.AsyncHttpClient; ...
  • eff666
  • eff666
  • 2016-08-05 08:51
  • 8646

JAVA读取数据库中的经纬度标定到高德地图上

效果如下: 前端页面: 浏览器定位 #container{width: 100%...
  • u011781521
  • u011781521
  • 2017-05-18 16:55
  • 1020

高德地图地理码和经纬度转化(latlng和latlonpoint)

1、 geocoderSearch = new GeocodeSearch(this); geocoderSearch.setOnGeocodeSearchListener(this); 重写他的on...
  • whyareusomw
  • whyareusomw
  • 2017-03-16 09:48
  • 2908

高德地图-Android-逆地理转换:经纬度转换成地址

GeocodeSearch geocoderSearch = new GeocodeSearch(this); geocoderSearch.setOnGeocodeSearchListener...
  • hiberatejss
  • hiberatejss
  • 2016-03-17 16:46
  • 5177

高德百度坐标系转换方法

在开始这个题目之前,先给大家再次扫扫盲,扫的不是坐标系统的盲,而是我们国家所使用的坐标系统。大家都知道,美国GPS使用的是WGS84的坐标系统,以经纬度的形式来表示地球平面上的某一个位置,这应该是国际...
  • meegomeego
  • meegomeego
  • 2014-10-09 10:47
  • 49824
    个人资料
    • 访问:26628次
    • 积分:846
    • 等级:
    • 排名:千里之外
    • 原创:52篇
    • 转载:27篇
    • 译文:0篇
    • 评论:3条
    最新评论