1. 程式人生 > >幾個工具類

幾個工具類

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));
    }
}    

幾個工具類