想在 C# 代码隐藏中获取 GPS 坐标

Posted

技术标签:

【中文标题】想在 C# 代码隐藏中获取 GPS 坐标【英文标题】:Want to get GPS coordinates in c# codebehind 【发布时间】:2013-11-22 14:46:28 【问题描述】:

我的 GPS 坐标有点问题。我可以使用地理位置在 asp.net / javascript 中获取坐标,但需要这些可用于 c# 代码隐藏中的方法。不幸的是,由于某种原因,检索到的坐标不是,即使我将它们放入标签中(由于某种原因它们永远不会在那里结束)。

所以,我现在想的是尝试以某种方式将坐标(只需要纬度和经度)直接输入 c#,即使我必须通过 c# 运行一些 javascript(不确定你是如何做到的)。

有人有什么想法吗?我在下面发布了 javascript:

<button id="btnLocate" runat="server" onclick="GetLocation()" style="width: 15%">Loc</button>

        <script type="text/javascript">

            function GetLocation()
            
                if (navigator.geolocation)
                
                    navigator.geolocation.getCurrentPosition(ShowPosition, ShowError,  maximumAge: 5000, timeout: 10000 );
                
                else  alert("Geolocation is not supported by this browser."); 
            
            function ShowPosition(position)
            
                var latdata = position.coords.latitude;
                var londata = position.coords.longitude;
                document.getElementById("lblLat").value = latdata;
                document.getElementById("lblLon").value = londata;
            
            function ShowError(error)
            
                if (error.code == 1)
                
                    alert("User denied the request for Geolocation.");
                
                else if (error.code == 2)
                
                    alert("Location information is unavailable.");
                
                else if (error.code == 3)
                
                    alert("The request to get user location timed out.");
                
                else
                
                    alert("An unknown error occurred.");
                
            

        </script>

【问题讨论】:

你需要使用AJAX,或者将它们放在浏览器将发送回服务器的表单元素中, 以前从未尝试过 AJAX。正如我所说,我尝试将它们放入标签中(好吧,文本框,但我尝试过标签)。也不是表单元素。我该怎么做? 标签未回发。文本框是,但您需要使用ClientID。查看浏览器错误控制台。 【参考方案1】:

我猜你想在代码隐藏方法中使用坐标?

为什么不直接在打开页面时运行,然后在单击按钮时检索标签/文本框的数据?

<script type="text/javascript" id="getCord">

if(typeof navigator.geolocation === 'undefined')

    alert("Geolocation services are not supported by your web browser");


else

    navigator.geolocation.getCurrentPosition(handleLocation, handleError);


function handleLocation(position)


    var lat = position.coords.latitude;

    document.getElementById('<%= latTextBox.ClientID %>').value = lat;

    var lon = position.coords.longitude;

    document.getElementById('<%= lonTextBox.ClientID %>').value = lon;



function handleError(error)

    switch (error.code) 
    
        case error.TIMEOUT:
            alert('Timeout');
        break;
        case error.POSITION_UNAVAILABLE:
            alert('Position unavailable');
        break;
        case error.PERMISSION_DENIED:
            alert('Permission denied');
        break;
        case error.UNKNOWN_ERROR:
            alert('Unknown error');
        break;
    

这将在不按按钮的情况下运行,并且您在 lonTextBox 上 ID 为 latTextBox 的文本框将获得您可以使用的坐标。

【讨论】:

以上是关于想在 C# 代码隐藏中获取 GPS 坐标的主要内容,如果未能解决你的问题,请参考以下文章

使用内部 GPS 接收器和 VBA 获取 GPS 坐标

html5 如何调用安卓手机获取gps坐标

Android 在设备处于睡眠状态时获取 GPS 坐标更新(屏幕已关闭)

获取 GPS 位置坐标并存储在数组中 [重复]

c# 地理坐标观察者不返回正确的坐标

获取 GPS 坐标并保存为文本文件