zoukankan      html  css  js  c++  java
  • 网页JS获取当前地理位置(省市区)

    转载自:http://www.cnblogs.com/ZHF/p/4169634.html

    1.手机WEB定位方法:

    var getLocation = function (successFunc, errorFunc) { //successFunc获取定位成功回调函数,errorFunc获取定位失败回调
     
        //首先设置默认城市
        var defCity = {
            id: '000001',
            name: '北京市',
            date: curDateTime()//获取当前时间方法
        };
        //默认城市
        $.cookie('VPIAO_MOBILE_DEFAULTCITY', JSON.stringify(defCity), { expires: 1, path: '/' });
     
        if (navigator.geolocation) {
            navigator.geolocation.getCurrentPosition(function (position) {
                var lat = position.coords.latitude;
                var lon = position.coords.longitude;
                //var map = new BMap.Map("container");   // 创建Map实例
                var point = new BMap.Point(lon, lat); // 创建点坐标
                var gc = new BMap.Geocoder();
                gc.getLocation(point, function (rs) {
                    var addComp = rs.addressComponents;
                    var curCity = {
                        id: '',
                        name: addComp.province,
                        date: curDateTime()
                    };
                    //当前定位城市
                    $.cookie('VPIAO_MOBILE_CURRENTCITY', JSON.stringify(curCity), { expires: 7, path: '/' });
                    //alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street);
                    if (successFunc != undefined)
                        successFunc(addComp);
                });
            },
            function (error) {
                switch (error.code) {
                    case 1:
                        alert("位置服务被拒绝。");
                        break;
                    case 2:
                        alert("暂时获取不到位置信息。");
                        break;
                    case 3:
                        alert("获取位置信息超时。");
                        break;
                    default:
                        alert("未知错误。");
                        break;
                }
                var curCity = {
                    id: '000001',
                    name: '北京市',
                    date: curDateTime()
                };
                //默认城市
                $.cookie('VPIAO_MOBILE_DEFAULTCITY', JSON.stringify(curCity), { expires: 1, path: '/' });
                if (errorFunc != undefined)
                    errorFunc(error);
            }, { timeout: 5000, enableHighAccuracy: true });
        } else {
            alert("你的浏览器不支持获取地理位置信息。");
            if (errorFunc != undefined)
                errorFunc("你的浏览器不支持获取地理位置信息。");
        }
    };
    var showPosition = function (position) {
        var lat = position.coords.latitude;
        var lon = position.coords.longitude;
        //var map = new BMap.Map("container");   // 创建Map实例
        var point = new BMap.Point(lon, lat); // 创建点坐标
        var gc = new BMap.Geocoder();
        gc.getLocation(point, function (rs) {
            var addComp = rs.addressComponents;
            var curCity = {
                id: '',
                name: addComp.province,
                date: curDateTime()
            };
            //当前定位城市
            $.cookie('VPIAO_MOBILE_CURRENTCITY', JSON.stringify(curCity), { expires: 7, path: '/' });
            //alert(addComp.province + ", " + addComp.city + ", " + addComp.district + ", " + addComp.street);
        });
    };
    var showPositionError = function (error) {
        switch (error.code) {
            case 1:
                alert("位置服务被拒绝。");
                break;
            case 2:
                alert("暂时获取不到位置信息。");
                break;
            case 3:
                alert("获取位置信息超时。");
                break;
            default:
                alert("未知错误。");
                break;
        }
        var curCity = {
            id: '000001',
            name: '北京市',
            date: curDateTime()
        };
        //默认城市
        $.cookie('VPIAO_MOBILE_DEFAULTCITY', JSON.stringify(curCity), { expires: 1, path: '/' });
    };

    前提要引入百度API:<script src="http://api.map.baidu.com/api?v=1.4" type="text/javascript"></script>

    2.PC端通过IP实现方法:

      采用腾讯提供的接口,这个目前已经不能使用了  

    <script type="text/javascript" src="http://fw.qq.com/ipaddress"></script>
    <script type="text/javascript">
        document.write(IPData[0]);    //显示IP地址
        document.write(IPData[2]);    //显示省
        document.write(IPData[3]);    //显示市
    </script>

    采用新浪接口: http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 

      多地域测试方法:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=127.0.0.1

    <script type="text/javascript">
            $.getScript('http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js', function(_result) {
                if (remote_ip_info.ret == '1') {
                    alert('国家:' + remote_ip_info.country + '<BR>省:' + remote_ip_info.province + '<BR>市:' + remote_ip_info.city + '<BR>区:' + remote_ip_info.district + '<BR>ISP:' + remote_ip_info.isp + '<BR>类型:' + remote_ip_info.type + '<BR>其他:' + remote_ip_info.desc);
                } else {
                    alert('没有找到匹配的IP地址信息!');
                }
            });
    </script>

    网易有道IP地址接口(这个有待测试)

      http://www.youdao.com/smartresult-xml/search.s?type=ip&q=IP地址

         淘宝请求接口(GET)

    <script>
    var ip = "124.127.108.133";
                var url = "http://ip.taobao.com/service/getIpInfo.php?ip=" + ip;
                $.getJSON(url, function (json) {
                    var myprovince2 = json.data.area;
                    var mycity2 = json.data.region;
                    alert("您所在的城市是:" + myprovince2 + mycity2);
                });
    </script>

    太平洋IP地址库API接口

      http://whois.pconline.com.cn/?ip=[ip地址字符串]

      另外:还有google、搜狐等提供对应的接口,大家可以自己试一试。

      搜狐IP地址查询接口(默认GBK):http://pv.sohu.com/cityjson

         搜狐IP地址查询接口(可设置编码):http://pv.sohu.com/cityjson?ie=utf-8

         搜狐另外的IP地址查询接口:http://txt.go.sohu.com/ip/soip

      3.获取客户端IP方法

    <script>
    var url = 'http://chaxun.1616.net/s.php?type=ip&output=json&callback=?&_=' + Math.random();
                $.getJSON(url, function(data) {
                    alert(data.Ip);
                });
    </script>
  • 相关阅读:
    python中计算程序用时的方法
    既生list何生tuple
    SSAS-时间维度的标准设计
    1092 最好吃的月饼 (20 分
    1091 N-自守数 (15 分)
    1149 Dangerous Goods Packaging (25 分)
    1148 Werewolf
    1144 The Missing Number (20 分)
    1141 PAT Ranking of Institutions (25 分)
    1140 Look-and-say Sequence (20 分)
  • 原文地址:https://www.cnblogs.com/zrui-xyu/p/4952187.html
Copyright © 2011-2022 走看看