最近在做一个车辆调度的应用系统,需要根据车辆和站点的位置做相应的规划,因此要调用第三方的地图接口来获取经纬度等信息。这里,我选择的是高德平台,下面是一个从注册到简单使用的例子,可供大家学习参考,更深入的使用,大家可参考官网学习。
1、关于高德开放平台高德开放平台的网址:http://lbs.amap.com/
注册账号:如果之前没有注册过账号,先注册账号。
2、创建应用注册号账号,登录进去之后,进入个人控制台。控制台界面如下:
然后,依次点击应用管理-->我的应用-->创建新应用,如下图所示。
填写应用名称和类型,随便填:
点击创建之后,在“我的应用”里就会出现刚才创建的应用。
3、获取key然后,点击右上角“添加”。
会出现下面的页面,根据你的应用类型选择就行了。对于普通的Java应用,选择“Web服务”就可以了。
填好相关信息,提交之后,在“我的个人网站”里就可以看到生成的key了:
四、代码根据地址获取经纬度涉及相关maven依赖:
com.alibaba
fastjson
1.2.24
org.apache.httpcomponents
httpclient
代码如下:
注意,一定要替换你自己的key,不要一上来就执行!
package ztt.map;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.http.HttpEntity;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;
import java.io.IOException;
/**
* @Description:
* @Auther: ztt
* @Date: 2020/4/22 15:48
*/
public class GaoDeMapUtil {
public static void main(String[] args) {
// 地址名称
String address = "上海交通大学徐汇校区";
// 刚刚申请的key。一定要换成你自己的key!!!!!!!
String key = "aaaaaaaaaaaaaaa";
// 调用自己写好的封装方法
JSONObject positionObj = getLngAndLat(address, key);
String longitude = positionObj.getString("longitude");
String latitude = positionObj.getString("latitude");
System.out.println("经度:" + longitude);
System.out.println("纬度:" + latitude);
}
/**
* 根据地址查询经纬度
*
* @param address
* @param key
* @return
*/
public static JSONObject getLngAndLat(String address, String key) {
JSONObject positionObj = new JSONObject();
try {
// 拼接请求高德的url
String url = "http://restapi.amap.com/v3/geocode/geo?address=" + address + "&output=JSON&key=" + key;
// 请求高德接口
String result = sendHttpGet(url);
JSONObject resultJOSN = JSONObject.parseObject(result);
System.out.println("高德接口返回原始数据:");
System.out.println(resultJOSN);
JSONArray geocodesArray = resultJOSN.getJSONArray("geocodes");
if (geocodesArray.size() > 0) {
String position = geocodesArray.getJSONObject(0).getString("location");
String[] lngAndLat = position.split(",");
String longitude = lngAndLat[0];
String latitude = lngAndLat[1];
positionObj.put("longitude", longitude);
positionObj.put("latitude", latitude);
}
geocodesArray.getJSONObject(0).getString("location");
} catch (Exception e) {
e.printStackTrace();
}
return positionObj;
}
/**
* 发送Get请求
*
* @param url
* @return
*/
public static String sendHttpGet(String url) {
HttpGet httpGet = new HttpGet(url);
RequestConfig defaultRequestConfig = RequestConfig.custom()
.setConnectTimeout(3000)
.setSocketTimeout(10000)
.build();
CloseableHttpClient httpClient = HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
String result = "";
try {
CloseableHttpResponse closeableHttpResponse = httpClient.execute(httpGet);
HttpEntity entity = closeableHttpResponse.getEntity();
result = EntityUtils.toString(entity, "UTF-8");
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
}
作者:到火星观雪