高德地图之地理编码的使用

高德地图之地理编码的使用(替换你的KEY)


地理编码API地址:http://lbs.amap.com/api/webservice/guide/api/georegeo


package com.gdmap.jopo.position;


public class PositionJson {
	/*
	 * 返回结果状态值 返回值为 0 或 1,0 表示请求失败;1 表示请求成功。
	 */
	private String status;
	private String count;
	private Geocodes geocodes;


	public PositionJson() {
		super();
	}


	public PositionJson(String status, String count, Geocodes geocodes) {
		super();
		this.status = status;
		this.count = count;
		this.geocodes = geocodes;
	}


	@Override
	public String toString() {
		return "PositionJson [status=" + status + ", count=" + count
				+ ", geocodes=" + geocodes.toString() + "]";
	}


	public String getStatus() {
		return status;
	}


	public void setStatus(String status) {
		this.status = status;
	}


	public String getCount() {
		return count;
	}


	public void setCount(String count) {
		this.count = count;
	}


	public Geocodes getGeocodes() {
		return geocodes;
	}


	public void setGeocodes(Geocodes geocodes) {
		this.geocodes = geocodes;
	}
}



package com.gdmap.jopo.position;

public class Geocodes {
	private String formatted_address;
	private String province;
	private String city;
	private String citycode;
	private String district;
	private String township;
	private String street;
	private String number;
	private String adcode;
	private String location;
	private String level;

	public Geocodes() {
		super();
	}

	public Geocodes(String formatted_address, String province, String city,
			String citycode, String district, String township, String street,
			String number, String adcode, String location, String level) {
		super();
		this.formatted_address = formatted_address;
		this.province = province;
		this.city = city;
		this.citycode = citycode;
		this.district = district;
		this.township = township;
		this.street = street;
		this.number = number;
		this.adcode = adcode;
		this.location = location;
		this.level = level;
	}

	public String getFormatted_address() {
		return formatted_address;
	}

	public void setFormatted_address(String formatted_address) {
		this.formatted_address = formatted_address;
	}

	public String getProvince() {
		return province;
	}

	public void setProvince(String province) {
		this.province = province;
	}

	public String getCity() {
		return city;
	}

	public void setCity(String city) {
		this.city = city;
	}

	public String getCitycode() {
		return citycode;
	}

	public void setCitycode(String citycode) {
		this.citycode = citycode;
	}

	public String getDistrict() {
		return district;
	}

	public void setDistrict(String district) {
		this.district = district;
	}

	public String getTownship() {
		return township;
	}

	public void setTownship(String township) {
		this.township = township;
	}

	public String getStreet() {
		return street;
	}

	public void setStreet(String street) {
		this.street = street;
	}

	public String getNumber() {
		return number;
	}

	public void setNumber(String number) {
		this.number = number;
	}

	public String getAdcode() {
		return adcode;
	}

	public void setAdcode(String adcode) {
		this.adcode = adcode;
	}

	public String getLocation() {
		return location;
	}

	public void setLocation(String location) {
		this.location = location;
	}

	public String getLevel() {
		return level;
	}

	public void setLevel(String level) {
		this.level = level;
	}

	@Override
	public String toString() {
		return "Geocodes [formatted_address=" + formatted_address
				+ ", province=" + province + ", city=" + city + ", citycode="
				+ citycode + ", district=" + district + ", township="
				+ township + ", street=" + street + ", number=" + number
				+ ", adcode=" + adcode + ", location=" + location + ", level="
				+ level + "]";
	}

}


package com.gdmap.util.map;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.gdmap.jopo.position.Geocodes;
import com.gdmap.jopo.position.PositionJson;
import com.hbbc.util.HttpUtil;

public class PositionUtil {
	private static String URL = "http://restapi.amap.com/v3/geocode/geo";
	private static String key = "/*你的KEY*/";

	/**
	 * @author mzm
	 * @param address
	 *            要转换的地址
	 * @return PositionJson 位置
	 */
	public static PositionJson getPosition(String address) {
		return getPosition(address, null);
	}

	/**
	 * @author mzm
	 * @param address
	 *            ,要转换的地址,不能为null
	 * @param city
	 *            ,要转换地址的城市,非必填项
	 * @return JSONObject
	 */
	public static PositionJson getPosition(String address, String city) {
		URL += "?key=" + key;
		URL += "&address=" + address + "&city=" + city;

		JSONObject jsonObject = null;
		PositionJson positionJson = null;
		if (!address.equals("") && address != null) {
			//System.out.println("--" + URL);
			String result = HttpUtil.callWebPage(URL, null);
			jsonObject = JSON.parseObject(result);
			//System.out.println(jsonObject);

			positionJson = new PositionJson();
			positionJson.setStatus(jsonObject.getString("status"));
			positionJson.setStatus(jsonObject.getString("count"));
			JSONArray jsonArray = jsonObject.getJSONArray("geocodes");
			Geocodes geocodes = new Geocodes();
			if (jsonArray != null && jsonArray.size() != 0) {
				JSONObject jsonObject2 = (JSONObject) jsonArray.get(0);
				geocodes.setFormatted_address(jsonObject2
						.getString("formatted_address"));
				geocodes.setProvince(jsonObject2.getString("province"));
				geocodes.setCity(jsonObject2.getString("city"));
				geocodes.setCitycode(jsonObject2.getString("citycode"));
				geocodes.setDistrict(jsonObject2.getString("district"));
				geocodes.setTownship(jsonObject2.getString("township"));
				geocodes.setStreet(jsonObject2.getString("street"));
				geocodes.setNumber(jsonObject2.getString("number"));
				geocodes.setAdcode(jsonObject2.getString("adcode"));
				geocodes.setLocation(jsonObject2.getString("location"));
				geocodes.setLevel(jsonObject2.getString("level"));
			}
			positionJson.setGeocodes(geocodes);
			System.out.println(positionJson.toString());
		}
		return positionJson;
	}

}


package com.hbbc.test;

import com.gdmap.util.map.PositionUtil;

public class Test {
	public static void main(String[] args) {
		/**
		 * 地理编码:将详细的结构化地址转换为高德经纬度坐标。且支持对地标性名胜景区、建筑物名称解析为高德经纬度坐标。
		 * 结构化地址举例:北京市朝阳区阜通东大街6号转换后经纬度:116.480881,39.989410
		 * 地标性建筑举例:天安门转换后经纬度:116.397499,39.908722
		 */

		/*
		 * http://lbs.amap.com/api/webservice/guide/api/georegeo
		 * 
		 * key和address,必须包含的参数
		 * 
		 * http://restapi.amap.com/v3/geocode/geo?address=北京市朝阳区阜通东大街6号&output=XML
		 * &key=<用户的key>
		 */

		// 请求地址
		String address = "北京市朝阳区阜通东大街6号转换";
		//city可以为null
		String city = "北京";

		PositionUtil.getPosition(address, city);
		
	}
}
   

输出结果:
PositionJson [status=1, count=null, geocodes=Geocodes [formatted_address=北京市朝阳区阜通东大街|6号楼, province=北京市, city=北京市, citycode=010, district=朝阳区, township=[], street=阜通东大街, number=6号楼, adcode=110105, location=116.484546,39.990064, level=门牌号]]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
使用高德地图进行逆地理编码,你需要先获取到对应的经纬度坐标。然后,你可以使用高德地图提供的 `GeocodeSearch` 类来进行逆地理编码。 下面是一个简单的示例代码: ```java // 创建 GeocodeSearch 对象 GeocodeSearch geocodeSearch = new GeocodeSearch(context); // 设置逆地理编码的监听器 geocodeSearch.setOnGeocodeSearchListener(new GeocodeSearch.OnGeocodeSearchListener() { @Override public void onRegeocodeSearched(RegeocodeResult result, int rCode) { if (rCode == AMapException.CODE_AMAP_SUCCESS) { // 解析逆地理编码的结果 String address = result.getRegeocodeAddress().getFormatAddress(); // 处理获取到的地址信息 // ... } else { // 处理逆地理编码失败的情况 // ... } } @Override public void onGeocodeSearched(GeocodeResult result, int rCode) { // 不需要处理正地理编码的情况 } }); // 创建逆地理编码的查询参数 RegeocodeQuery query = new RegeocodeQuery( new LatLonPoint(latitude, longitude), // 经纬度坐标 200, // 查询半径,单位米 GeocodeSearch.AMAP // 查询的服务类型,AMAP表示使用高德地图 ); // 执行逆地理编码查询 geocodeSearch.getFromLocationAsyn(query); ``` 在上面的示例代码中,`latitude` 和 `longitude` 分别表示要查询的经纬度坐标。在 `onRegeocodeSearched` 方法中,`result` 参数表示逆地理编码的结果,`rCode` 参数表示查询是否成功。如果查询成功,你可以从 `result` 中获取到地址信息,比如详细地址、省份、城市、区县等信息。如果查询失败,你需要根据 `rCode` 参数来判断具体的失败原因。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值