获取用户当前位置的经纬度

Posted

技术标签:

【中文标题】获取用户当前位置的经纬度【英文标题】:Fetch latitude and longitude on user's current location 【发布时间】:2018-06-27 05:56:57 【问题描述】:

我想获取用户当前位置的纬度和经度值。我的 asp.net Web 应用程序在 HTTP 协议上运行,并且根据 Google 的开发人员指南,该应用程序必须在 HTTPS 协议上运行才能使用 html5 GeoLocation Service。不知何故,我找到了这个解决方案https://***.com/a/39367531/7057220 并尝试了这个

 <script type="text/javascript">
        $(document).ready(function () 
            debugger;
            var apiGeolocationSuccess = function (position) 
                alert("API geolocation success!\n\nlat = " + position.coords.latitude + "\nlng = " + position.coords.longitude);
            ;
            var tryAPIGeolocation = function () 
                debugger;
                jQuery.post("https://www.googleapis.com/geolocation/v1/geolocate?key=MyAPIKey", function (success) 
                    apiGeolocationSuccess( coords:  latitude: success.location.lat, longitude: success.location.lng  );
                )
              .fail(function (err) 
                  alert("API Geolocation error! \n\n" + err);
              );
            ;

            var browserGeolocationSuccess = function (position) 
                debugger;
                alert("Browser geolocation success!\n\nlat = " + position.coords.latitude + "\nlng = " + position.coords.longitude);
            ;

            var browserGeolocationFail = function (error) 
                switch (error.code) 
                    case error.TIMEOUT:
                        alert("Browser geolocation error !\n\nTimeout.");
                        break;
                    case error.PERMISSION_DENIED:
                        if (error.message.indexOf("Only secure origins are allowed") == 0) 
                            tryAPIGeolocation();
                        
                        break;
                    case error.POSITION_UNAVAILABLE:
                        alert("Browser geolocation error !\n\nPosition unavailable.");
                        break;
                
            ;
            var tryGeolocation = function () 
                debugger;
                if (navigator.geolocation) 
                    navigator.geolocation.getCurrentPosition(
                        browserGeolocationSuccess,
                      browserGeolocationFail,
                       maximumAge: 50000, timeout: 20000, enableHighAccuracy: true );
                
            ;
            tryGeolocation();
        );
    </script>  

问题是每当我运行此代码时,它总是给我错误的纬度和经度值。我想知道我做错了什么。那么,如何在没有 SSL 连接的情况下使用地理定位

【问题讨论】:

您期望的纬度:经度以及您得到的错误值是多少? it always gives me incorrect Latitude and Longitude values - 哪个部分可以? navigator.geolocation.getCurrentPosition?还是jQuery.post("https://www.googleapis.com/geolocation/v1/geolocate?key=MyAPIKey 预期值(根据我当前位置):28.4523609,77.067686,实际结果 28.6862738, 77.2217831 这是错误的 【参考方案1】:

您可以使用我在 W3schools 上找到的简单 Javascript 代码

function getLocation() 
    if (navigator.geolocation) 
        navigator.geolocation.getCurrentPosition(showPosition);
     else  
        x.innerHTML = "Geolocation is not supported by this browser.";
    


function showPosition(position) 
 alert('Latitude: '+position.coords.latitude +'Longitude: '+ position.coords.longitude);

【讨论】:

感谢您的回复,但我之前已经尝试过,更重要的是,此示例仅适用于 HTTPS 协议。我的应用程序通过 HTTP 协议运行。 Geolocation API 从 Chrome 50 中的 Unsecured Origins 中删除 Google 已停止 API 支持 unsecured 即 http 网站探索下面的文章 developers.google.com/web/updates/2016/04/…【参考方案2】:

你可以试试

<!DOCTYPE html>
<html>
<body>

<p>Click the button to get your coordinates.</p>

<button onclick="getLocation()">Try It</button>

<p id="demo"></p>

<script>
var x = document.getElementById("demo");


 
function getLocation() 
    if (navigator.geolocation) 
        navigator.geolocation.getCurrentPosition(showPosition);
     else  
        x.innerHTML = "Geolocation is not supported by this browser.";
    


function showPosition(position) 
 var a = position.coords.latitude + ',' + position.coords.longitude;

 alert(a);

</script>

</body>
</html>

【讨论】:

以上是关于获取用户当前位置的经纬度的主要内容,如果未能解决你的问题,请参考以下文章

H5微信 获取用户当前位置信息

vue/js如何精准获取用户当前地理位置,精准获取经纬度精准地图选点,Android定位偏移问题解决

安卓手机上有啥APP能简便快捷的获取当前位置的经纬度

安卓手机上有啥APP能简便快捷的获取当前位置的经纬度

微信小程序-获取当前位置和城市名

php怎样获取当前位置的经纬度?