高德地图之地理编码的使用(替换你的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=门牌号]]