日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

Java实现根据地理位置获取经纬度

發布時間:2023/12/31 java 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Java实现根据地理位置获取经纬度 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

根據數據庫中的地理位置信息,批量生成坐標信息,并插入新的表中。

import com.alibaba.fastjson.JSONObject; import com.github.pagehelper.PageInfo; import org.apache.ibatis.annotations.Param; import org.omg.CORBA.Request; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.web.bind.annotation.*;import java.io.IOException; import java.net.*; import java.text.DecimalFormat; import java.util.*;import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.List; @GetMapping("/tabmapperdictMapper")public void tabmapperdictMapper() throws IOException {//獲取地理信息表數據List<tab_farm> tab_farms = tabmapper.selectPigGmcDataAll();//獲取地理坐標表的數據(初始為空)List<String> Coordtransid=tabmapper.selectTabFarmCoordtransid();//遍歷地理信息表數據for (int i = 0; i < tab_farms.size(); i++) {tab_farm s =tab_farms.get(i);int transid=s.getTransid();String licnum=s.getLicnum();String unitaddr=s.getUnitaddr();String Strtransid= Integer.toString(transid);//判斷數據庫是否存在此條數據if (exist(Coordtransid, Strtransid)) {// System.out.println("數據庫存在此條數據:"+Strtransid);} else {System.out.println("數據庫存不在此條數據:"+Strtransid);String coordinate = getCoordinate(unitaddr);String[] result = coordinate.split(",");if (result != null && !"".equals(result)) {String Slng=result[0];String Slat=result[1];double lng=Double.parseDouble(Slng);double lat=Double.parseDouble(Slat);if(lng == 0){System.out.println("配額超標×××××××××××××××××××××××××××××運行結束");return;}else if(lng == 1){System.out.println("未找到地理位置信息*******************插入繼續");tabmapper.insertTab_farmCoord(transid,licnum,unitaddr,lng,lat);}else{System.out.println("成功插入地理位置信息√√√√√√√√√√√√√√√√√√√√√√√√√√√插入繼續");tabmapper.insertTab_farmCoord(transid,licnum,unitaddr,lng,lat);}}}}};

?獲取對應地址的坐標

public static String getCoordinate(String Stringunitaddr) {System.out.println("要查詢的地名:"+Stringunitaddr);//去掉中文地址中的空白字符String unitaddr=Stringunitaddr.replaceAll("\\s*", "");String url = "http://api.map.baidu.com/geocoder/v2/?output=json&ak=xxxxxx&address=" + unitaddr;//String url = "http://api.map.baidu.com/geocoder/v2/?output=json&ak=xxxxxx&address=" + unitaddr;String json = loadJSON(url);System.out.println("開始執行百度接口:"+url);System.out.println("百度返回的json:"+json);if (json != null && !"".equals(json)) {//先把String對象轉換成json對象JSONObject obj= JSONObject.parseObject(json);if ("0".equals(obj .getString("status"))) {//查詢成功情況System.out.println("成功返回的信息:"+obj);double lng = obj .getJSONObject("result").getJSONObject("location").getDouble("lng"); // 經度double lat = obj .getJSONObject("result").getJSONObject("location").getDouble("lat"); // 緯度DecimalFormat df = new DecimalFormat("#.######");System.out.println(df.format(lng) + "," + df.format(lat));return df.format(lng)+","+df.format(lat);}else {//查詢失敗情況if ("1".equals(obj .getString("status"))) {//未找到地理位置信息System.out.println("未找到地理位置返回的信息:"+obj);return '1'+","+'1';}else if("302".equals(obj .getString("status"))){System.out.println("配額超限返回的信息:"+obj);//每天配額超標的情況return '0'+","+'0';}}}return '1'+","+'1';}

?根據百度地圖api路徑,返回相關參數

public static String loadJSON(String url) {StringBuilder json = new StringBuilder();try {URL oracle = new URL(url);URLConnection yc = oracle.openConnection();BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream(), "UTF-8"));String inputLine = null;while ((inputLine = in.readLine()) != null) {json.append(inputLine);}in.close();} catch (MalformedURLException e) {} catch (IOException e) {}return json.toString();}

判斷id是否存在

public static boolean exist(List<String> arr, String key) {for (int z = 0; z < arr.size();z++) {String qqq =arr.get(z);String www =key;if ( qqq.equals(www)) {return true;}}return false;}

下面是一些demo??

http://api.map.baidu.com/geocoder/v2/?output=json&ak=xxxxxxxxxxxxx&address=找不到地理位置信息情況

{"status":1,"msg":"Internal Service Error:無相關結果","results":[]}

http://api.map.baidu.com/geocoder/v2/?output=json&ak=xxxxxxxxxxxxx&address=成功返回位置信息情況

{"status":0,"result":{"location":{"lng":119.39791832517085,"lat":30.112109268949444},"precise":1,"confidence":75,"comprehension":100,"level":"賓館"}}

http://api.map.baidu.com/geocoder/v2/?output=json&ak=xxxxxxxxxxxxx&address=配額超標情況

{"status":302,"message":"天配額超限,限制訪問"}

?

總結

以上是生活随笔為你收集整理的Java实现根据地理位置获取经纬度的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。