• 几个工具类


    一:通过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));
        }
    }    
    import java.net.Inet4Address;
    import java.net.InetAddress;
    import java.net.InterfaceAddress;
    import java.net.NetworkInterface;
    import java.net.SocketException;
    import java.util.Enumeration;
    import java.util.List;
    
    public class localIp {
        /**
         * 获取本机Ip 
         *  
         *  通过 获取系统所有的networkInterface网络接口 然后遍历 每个网络下的InterfaceAddress组。
         *  获得符合 <code>InetAddress instanceof Inet4Address</code> 条件的一个IpV4地址
         * @return
         */
        @SuppressWarnings("rawtypes")
        private static String localIp(){
            String ip = null;
            Enumeration allNetInterfaces;
            try {
                allNetInterfaces = NetworkInterface.getNetworkInterfaces();            
                while (allNetInterfaces.hasMoreElements()) {
                    NetworkInterface netInterface = (NetworkInterface) allNetInterfaces.nextElement();
                    List<InterfaceAddress> InterfaceAddress = netInterface.getInterfaceAddresses();
                    for (InterfaceAddress add : InterfaceAddress) {
                        InetAddress Ip = add.getAddress();
                        if (Ip != null && Ip instanceof Inet4Address) {
                            ip = Ip.getHostAddress();
                        }
                    }
                }
            } catch (SocketException e) {
            }
            return ip;
        }
        public static void main(String[] args) {
            String ip = localIp.localIp();
            System.out.println(ip);
        }
    }
  • 相关阅读:
    Linux GNOME桌面使用技巧大全
    联想旭日 C465A 开机白屏
    基础知识:编程的工作机制
    JavaCC 学习笔记
    笨办法学R编程(1)
    一些学习方法总结
    使用变量表示字、数字和值
    栈溢出2017doubly_dangerous
    栈溢出warmup_csaw_2016
    基础学习ret2text
  • 原文地址:https://www.cnblogs.com/XJJD/p/7792722.html
Copyright © 2020-2023  润新知