C# html5中的地理定位

C# html5中的地理定位,c#,asp.net,asp.net-ajax,C#,Asp.net,Asp.net Ajax,如何在asp.net中获取当前纬度和经度。我有这个代码,但它没有返回数据。这不是坠落警报 <script type='text/javascript' language="javascript"> function getUserLock() { if (navigator.geolocation) { navigator.geolocation.getCurrentPosition(displayResult, displayE

如何在asp.net中获取当前纬度和经度。我有这个代码,但它没有返回数据。这不是坠落警报

  <script type='text/javascript' language="javascript">
    function getUserLock() {
        if (navigator.geolocation) {

            navigator.geolocation.getCurrentPosition(displayResult, displayError);
        }
        else {
            setMessage("Geolocation is not supported by this browser");
        }
    }

    function displayResult(position) {         
        setMessage("Latitude: " + position.coords.latitude + ", Longitude: " + position.coords.longitude);
        PageMethods.SendLocation(position.coords.latitude, position.coords.longitude, onComplete, onFailed);
        alert ('test');
    }

    function setMessage(msg) {
        //            document.forms[0].myLoc.value = msg;
    }

    function displayError(error) {
        var errors = { 1: 'Permission denied', 2: 'Position unavailable', 3: 'Request timeout' };
        setMessage("Error occured: " + errors[error.code]);
    }

    function onComplete(args) {
        if (args)
            alert('Log in oldunuz');
        else
            alert('İşlem Başarısız Oldu. Yeniden Deneyiniz...');
    }

    function onFailed(error) {
        alert('Yapılan işlem sırasında aşağıdaki hata(lar) oluştu.\n\r' + error.get_message());
    }

</script>

函数getUserLock(){
if(导航器.地理位置){
navigator.geolocation.getCurrentPosition(displayResult,displayError);
}
否则{
setMessage(“此浏览器不支持地理位置”);
}
}
函数显示结果(位置){
setMessage(“纬度:+position.coords.Latitude+”,经度:+position.coords.Longitude);
PageMethods.SendLocation(position.coords.latitude、position.coords.longitude、onComplete、onFailed);
警报(“测试”);
}
函数设置消息(msg){
//document.forms[0].myLoc.value=msg;
}
函数显示错误(错误){
var errors={1:'权限被拒绝',2:'位置不可用',3:'请求超时'};
setMessage(“发生错误:+错误[Error.code]);
}
函数onComplete(args){
如果(args)
警报(“登录oldunuz”);
其他的
警惕(‘lem Başarısız Oldu.Yeniden Deneyinizing…’);
}
函数onFailed(错误){
警报(“Yapılan işlem sırasında aşaıaıdaki hata(lar)oluştu.\n\r'+错误。获取消息());
}
这是按钮

 <asp:Button ID="LoginButton" runat="server" Text="Log In" ValidationGroup="LoginUserValidationGroup"
                OnClientClick="getUserLock();" OnClick="LoginButton_Click" />

这里可能有几个问题:

为了能够在JavaScript中使用PageMethods容器,您需要

首先,用[WebMethod]属性装饰您的方法。您只能使用静态方法

[WebMethod]
public static string HelloWorld(string name)
{
   return “Hello, World. I am ” + name;
}
其次,启用对PageMethods的支持

<asp:ScriptManager ID=”ScriptManager1″ runat=”server” EnablePageMethods=”True” />


我还将通过为函数提供适当的函数处理程序来添加一些对错误处理的支持:PageMethods的每次调用都会获取调用可能结果的参数以及一些其他参数。

第一件事是添加超时(默认超时是无限的),以便您可以获得错误消息

navigator.geolocation.getCurrentPosition(displayResult, displayError,{timeout:10000});

如果您输入一个警报,您的javascript是否获得纬度和经度?那将是最好的起点。我尝试过,但没有失败。首先用户单击myLogIn按钮,浏览器询问允许或拒绝。但在一秒钟内,它会自动消失,所以你的问题与纬度或经度无关?如果我允许,我可以取纬度或经度。。但是它消失了一秒钟所以你有两个问题?您需要使用javascript调试器来查看发生了什么,然后您可以返回到.NET代码来查看是什么导致了它。但是,我仍然不能接受这些数据。我调试了它,但断点并没有出错。(对不起,我的英语不好)