使用JS獲取當前地理位置方法彙總

一紙奇文發表於2018-08-15

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>

轉載連線:https://www.jb51.net/article/58654.htm

相關文章