Java实现根据地址调用高德地图获取经纬度等信息

Neoma ·
更新时间:2024-11-10
· 996 次阅读

最近在做一个车辆调度的应用系统,需要根据车辆和站点的位置做相应的规划,因此要调用第三方的地图接口来获取经纬度等信息。这里,我选择的是高德平台,下面是一个从注册到简单使用的例子,可供大家学习参考,更深入的使用,大家可参考官网学习。

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; } }
作者:到火星观雪



JAVA 调用 高德地图 地图 高德 地址 经纬度

需要 登录 后方可回复, 如果你还没有账号请 注册新账号