高德地图云API使用

xiaoxiao2021-02-28  137

现在越来越多应用使用地图功能了,目前使用云地图功能调用API实现是比较流行的解决方案。

下面就是高德云地图API使用例子讲解。

首先去高德开发网站注册一个开发者账号,

http://lbs.amap.com/

注册只需要提供手机号和邮箱就可以了。

测试只需要个人开发者,如果商业使用还是申请企业账号吧。

第二步,注册完毕,登陆管理控制台创建自己的应用。

系统默认给一个高德的key,为了更加安全还可以为应用创建一个私有Key

第三步,就可以参考网站的API开发了。下面是工具类代码,引用了一个第三方jar,fastjson-1.1.26.jar,JDK版本是1.8,

package com.meles.gaode; import java.net.URLEncoder; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; /**  *  * @author zhouxj  * web页面查看http://yuntu.amap.com/datamanager/table.html?action=update&tableid=59a69a6f305a2a4ed7ec700a  * 发布链接: https://yuntu.amap.com/share/zIzeia  */ public class GaodeUtil {     static String key = "fc3887a3d8583d3ede7452cd235279e6";  //高德Key     static String privateKey = "ea6a2a2dbfb48239f0e06fd5a35bf531"; //应用私有key     //String url = "http://yuntuapi.amap.com/datamanage/table/create";     static String  gaode_createtable_url="http://yuntuapi.amap.com/datamanage/table/create";     static String    gaode_createData_url="http://yuntuapi.amap.com/datamanage/data/create";     static String    gaode_updateData_url="http://yuntuapi.amap.com/datamanage/data/update";     static String    gaode_deleteData_url="http://yuntuapi.amap.com/datamanage/data/delete";     static String    gaode_location_list_url="http://yuntuapi.amap.com/datamanage/data/list";     static String    gaode_getDistance_url="http://restapi.amap.com/v3/distance";     static String    gaode_dataSearchArround_url="http://yuntuapi.amap.com/datasearch/around";     static String tableId = "59a69a6f305a2a4ed7ec700a";     public static String createTable(String tableName) {                  Map<String, Object> paramMap = new HashMap<String, Object>();         paramMap.put("key", key);         paramMap.put("name", tableName);         paramMap.put("sig", getGaodeSign(paramMap, privateKey));         String result = Httpclient.sendPost(gaode_createtable_url, paramMap);         return result;              }          public static String getGaodeSign(Map<String,Object> paramMap,String privateKey) {         Iterator<Entry<String, Object>> it = paramMap.entrySet().iterator();         List<String> paramKeyList = new ArrayList<String>();         while(it.hasNext()) {             Entry<String, Object> entry = it.next();             paramKeyList.add(entry.getKey());         }         String[] array = new String[paramKeyList.size()];         paramKeyList.toArray(array);         Arrays.sort(array);         StringBuffer sb = new StringBuffer();         for(int i = 0;i < array.length;i++) {             sb.append(array[i]);             sb.append("=");             sb.append(paramMap.get(array[i]));             sb.append("&");         }         String param = sb.substring(0, sb.length() - 1);         param = param + privateKey;         String sign = MD5Util.MD5Encode(param, "UTF-8");         return sign;     }          public static String createData(Map<String,Object> paramMap) {                  Map<String, Object> map = new HashMap<String, Object>();         map.put("key", key);         map.put("tableid", tableId);         //JSONObject json = JSONObject.fromObject(paramMap);         String jsonStr=JSON.toJSONString(paramMap);         map.put("data", jsonStr);         map.put("sig", getGaodeSign(map, privateKey));         String result = Httpclient.sendPost(gaode_createData_url, map);         System.out.println(result);         return result;              }          public static String updateData(Map<String,Object> paramMap) {                  Map<String, Object> map = new HashMap<String, Object>();         map.put("key", key);         map.put("tableid", tableId);         String jsonStr=JSON.toJSONString(paramMap);         map.put("data", jsonStr);         map.put("sig", getGaodeSign(map, privateKey));         String result = Httpclient.sendPost(gaode_updateData_url, map);         return result;              }          public static String deleteData(List<String> gaodeIdList,String tableId) {                  Map<String, Object> map = new HashMap<String, Object>();         map.put("key", key);         map.put("tableid", tableId);         StringBuffer sb = new StringBuffer();         for(int i = 0;i < gaodeIdList.size();i++) {             String id = gaodeIdList.get(i);             sb.append(id);             sb.append(",");         }         String ids = sb.substring(0, sb.length() - 1);         map.put("ids", ids);         map.put("sig", getGaodeSign(map, privateKey));         String result = Httpclient.sendPost(gaode_deleteData_url, map);         return result;              }          public static List<Map<String,String>> getLocationList(String bicycleId,String beginTimestamp,String endTimestamp) throws Exception {                           List<Map<String,String>> locationList = new ArrayList<Map<String,String>>();         Map<String, Object> map = new HashMap<String, Object>();         map.put("key", key);         map.put("tableid", tableId);         String filter = "bicycle_id:" + bicycleId + "+" + "time_stamp:[" + beginTimestamp + "," + endTimestamp + "]";         map.put("filter", filter);         String sortrule = "_createtime:0";         map.put("sortrule", sortrule);         map.put("limit", "100");         map.put("page", "1");         map.put("sig", getGaodeSign(map, privateKey));         map.put("filter", URLEncoder.encode(filter, "utf-8"));         String result = Httpclient.sendPost(gaode_location_list_url, map);         //JSONObject json = JSONObject.fromObject(result);         JSONObject json = JSONObject.parseObject(result);                  int status = json.getInteger("status");         if(status == 1) {             String datasString = json.getString("datas");             JSONArray datasJsonArray = com.alibaba.fastjson.JSONObject.parseArray(datasString);             for(int i =0;i < datasJsonArray.size();i++) {                 Map<String,String> locationMap = new HashMap<String, String>();                 com.alibaba.fastjson.JSONObject datasJson = (com.alibaba.fastjson.JSONObject) datasJsonArray.get(i);                 String location = datasJson.getString("_location");                 String[] locations = location.split(",");                 locationMap.put("lng", locations[0]);                 locationMap.put("lat", locations[1]);                 locationList.add(locationMap);             }             int count = json.getInteger("count");             if(count > 100) {                 int page = count % 100 == 0 ? count / 100 : count /100 + 1;                 for(int i = 2;i <= page;i++) {                     map.put("key", key);                     map.put("tableid", tableId);                     filter = "bicycle_id:" + bicycleId + "+" + "time_stamp:[" + beginTimestamp + "," + endTimestamp + "]";                     map.put("filter", filter);                     sortrule = "_createtime:0";                     map.put("sortrule", sortrule);                     map.put("limit", "100");                     map.put("page", String.valueOf(i));                     map.put("sig", getGaodeSign(map, privateKey));                     map.put("filter", URLEncoder.encode(filter, "utf-8"));                     result = Httpclient.sendPost(gaode_location_list_url, map);                     json = JSONObject.parseObject(result);                     status = json.getInteger("status");                     if(status == 1) {                         datasString = json.getString("datas");                         datasJsonArray = com.alibaba.fastjson.JSONObject.parseArray(datasString);                         for(int j =0;i < datasJsonArray.size();j++) {                             Map<String,String> locationMap = new HashMap<String, String>();                             com.alibaba.fastjson.JSONObject datasJson = (com.alibaba.fastjson.JSONObject) datasJsonArray.get(j);                             String location = datasJson.getString("_location");                             String[] locations = location.split(",");                             locationMap.put("lng", locations[0]);                             locationMap.put("lat", locations[1]);                             locationList.add(locationMap);                         }                     }                 }             }         }         return locationList;     }          public static String getDistance() {                           Map<String, Object> map = new HashMap<String, Object>();         map.put("key", key);         map.put("origins", "116.481028,39.989643");         map.put("destination", "114.465302,40.004717");         map.put("type", "0");         map.put("sig", getGaodeSign(map, privateKey));         String result = Httpclient.sendGet(gaode_getDistance_url, map);         return result;     }               public static String getRideDistance(String beginLat,String beginLng,String endLat,String endLng) {         Map<String, Object> map = new HashMap<String, Object>();         map.put("key", key);         map.put("origins", beginLat+","+beginLng);         map.put("destination", endLat+","+endLng);         map.put("type","0");         map.put("sig", getGaodeSign(map, privateKey));         String result = Httpclient.sendGet(gaode_getDistance_url, map);         com.alibaba.fastjson.JSONObject json = com.alibaba.fastjson.JSONObject.parseObject(result);         String status = json.getString("status");         String location = "0";         if(status.equals("1")) {             String datasString = json.getString("results");             JSONArray datasJsonArray = com.alibaba.fastjson.JSONObject.parseArray(datasString);             for(int i =0;i<1;i++) {                 com.alibaba.fastjson.JSONObject datasJson = (com.alibaba.fastjson.JSONObject) datasJsonArray.get(i);                 location = datasJson.getString("distance");             }         }         return location;     }          public static double searchDistance(List<Map<String,String>> mapList){         double totalDistance = 0;         Integer num = mapList.size();         if(num < 2){             return totalDistance;         }         for(int i = 0;i<num;i++){             if(i >= num-1){                 break;             }             Map<String,String> beginMap =  mapList.get(i);             Map<String,String> endMap =  mapList.get(i+1);             String firstLat = beginMap.get("lat");             String firstLng = beginMap.get("lng");             String lastLat = endMap.get("lat");             String lastLng = endMap.get("lng");                         String distance = getRideDistance(firstLat, firstLng,lastLat,lastLng);             double distanceDouble = Double.valueOf(distance);                         totalDistance = totalDistance + distanceDouble;                     }         return totalDistance;     }          public static String dataSearchArround() {         Map<String, Object> paramMap= new HashMap<String, Object>();         paramMap.put("key", key);         paramMap.put("tableid", tableId);         paramMap.put("center", "116.35261,40.044567");         paramMap.put("radius", "5000");         paramMap.put("sig", getGaodeSign(paramMap, privateKey));         String result = Httpclient.sendPost(gaode_dataSearchArround_url, paramMap);         return result;     }          public static void main(String[] args) { //        System.out.println(createTable("myTestMap")); //返回:{"info":"OK","infocode":"10000","status":1,"tableid":"59a69a6f305a2a4ed7ec700a"}                  System.out.println(createDataTest()); //返回: {"info":"OK","infocode":"10000","status":1,"_id":"1"}         System.out.println(dataSearchArround()); //返回:{"count":"1","info":"OK","infocode":"10000","status":1,"datas":[{"_id":"1","_location":"116.35261,40.044567","_name":"name6666666","_address":"北京市海淀区东升镇西小口路50号文龙家园三里","_createtime":"2017-08-31 10:07:41","_updatetime":"2017-08-31 10:07:41","_province":"北京市","_city":"北京市","_district":"海淀区","_distance":"0","_image":[]}]}         System.out.println(updateDataTest()); //返回:{"info":"OK","infocode":"10000","status":1}              }               public static String createDataTest() {         Map<String, Object> paramMap = new HashMap<String, Object>();         paramMap.put("_name", "name9766667");         paramMap.put("_location", "116.45971,40.144567");         paramMap.put("bicycle_id", "id9766667");         paramMap.put("bicycle_no", "9766667");         paramMap.put("status", "0");         paramMap.put("damage_status", "0");         paramMap.put("mch_id", "mch97667");         paramMap.put("is_red_packets", "0");         paramMap.put("bicycle_category_id", "2");         String result = createData(paramMap);         JSONObject jsonObject = JSONObject.parseObject(result);                  String gaodeId = jsonObject.getString("_id");         return result;     }          public static String updateDataTest() {         Map<String, Object> paramMap = new HashMap<String, Object>();         paramMap.put("_id", "4");         paramMap.put("_name", "updname9666667");         paramMap.put("_location", "116.45961,40.044567");         paramMap.put("bicycle_id", "id9666667");         paramMap.put("bicycle_no", "9666667");         paramMap.put("status", "0");         paramMap.put("damage_status", "0");         paramMap.put("mch_id", "mch96667");         paramMap.put("is_red_packets", "0");         paramMap.put("bicycle_category_id", "2");         String result = updateData(paramMap);         JSONObject jsonObject = JSONObject.parseObject(result);                  String gaodeId = jsonObject.getString("_id");         return result;     } }

如果密钥填写正常,而且tableId写的对的话就可以看到云地图效果了。

自己登录后台管理可以看到如下图:

别人能访问的地图如下图,发布链接: https://yuntu.amap.com/share/zIzeia:

是不是很方便啊。

手机查看地图效果图如下,如果开启定位功能则还有更多功能比如:定位,导航

全部源码下载链接:

http://www.meles.cn/bbs/forum.php?mod=attachment&aid=MTIwOXw1M2YyOTc1MXwxNTA0MjU4NDc0fDN8Njg5Mg==

转载请注明原文地址: https://www.6miu.com/read-25818.html

最新回复(0)