幾個工具類
阿新 • • 發佈:2017-11-06
rgs ip定位 ner math.sqrt on() ext blog inner 不支持
一:通過web獲取所在的經緯度(註意這裏有的臺式機不支持,所以最好用手機訪問):
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> </head> <body> <p id="demo"></p> <button onclick="getLocation()">獲取經緯度</button> </body> <script> var x=document.getElementById("demo"); var x2=document.getElementById("hideval"); function getLocation(){ //檢測是否支持地理定位 如果支持,則運行 getCurrentPosition() 方法。如果不支持,則向用戶顯示一段消息。 if (navigator.geolocation){//如果getCurrentPosition()運行成功, //則向參數showPosition中規定的函數返回一個coordinates對象 navigator.geolocation.getCurrentPosition(showPosition); }else{ x.innerHTML="地理位置瀏覽器支持"; } } function showPosition(position){ //showPosition() 函數獲得並顯示經度和緯度 x.innerHTML="緯度: " + position.coords.latitude + "<br />經度: " + position.coords.longitude; x2.innerHTML= +position.coords.latitude +","+position.coords.longitude; } </script> </html>
二:通過IP獲取所在的省市:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; import java.nio.charset.Charset; import org.json.JSONException; import org.json.JSONObject; /**通過ip獲得位置 * java根據url獲取json對象 * @author openks * @since 2013-7-16 * 需要添加java-json.jar才能運行 */ public class GetPlaceByIp { private static String readAll(Reader rd) throws IOException { StringBuilder sb = new StringBuilder(); int cp; while ((cp = rd.read()) != -1) { sb.append((char) cp); } return sb.toString(); } public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException { InputStream is = new URL(url).openStream(); try { BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8"))); String jsonText = readAll(rd); JSONObject json = new JSONObject(jsonText); return json; } finally { is.close(); // System.out.println("同時 從這裏也能看出 即便return了,仍然會執行finally的!"); } } public static void main(String[] args) throws IOException, JSONException { //這裏調用百度的ip定位api服務 詳見 http://api.map.baidu.com/lbsapi/cloud/ip-location-api.htm JSONObject json = readJsonFromUrl("http://api.map.baidu.com/location/ip?ak=DdUThOBpfjwAzk30cl4mg3UmhqOvsG4i&ip=121.34.107.240"); System.out.println(json.toString()); System.out.println(((JSONObject) json.get("content")).get("address")); } }
三:通過經緯度獲取兩點的距離:
/** * Created by yuliang on 2015/3/20. */ public class LocationUtils { private static double EARTH_RADIUS = 6378.137; private static double rad(double d) { return d * Math.PI / 180.0; } /** * java根據經緯度坐標計算兩點的距離算法 * 通過經緯度獲取距離(單位:米) * @param lat1 * @param lng1 * @param lat2 * @param lng2 * @return */ public static double getDistance(double lat1, double lng1, double lat2, double lng2) { double radLat1 = rad(lat1); double radLat2 = rad(lat2); double a = radLat1 - radLat2; double b = rad(lng1) - rad(lng2); double s = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLat1) * Math.cos(radLat2) * Math.pow(Math.sin(b / 2), 2))); s = s * EARTH_RADIUS; s = Math.round(s * 10000d) / 10000d; s = s*1000; return s; } public static void main(String[] args) { System.out.println(getDistance(22.5535653864,114.0703272860,22.5665111688,114.0375015218)); } }
幾個工具類