2011-12-13 96 views
2

我试图在.NET中为一个uni项目实现一些Google Maps的东西。在页面加载时从隐藏字段中获取JS值

但是,我正在努力将自己的坐标放到我的.NET Google地图控件中。

我认为最简单的方法是使用HTML5地理定位API获取当前位置的坐标,然后在我的.NET代码中抓住这些坐标并使用它们来居中地图。

我有以下JS代码:

$(document).ready(function() { 
      if (Modernizr.geolocation) { 
       navigator.geolocation.getCurrentPosition(getCoords); 
      } 
      else { 
       // no support 
      } 

      function getCoords(position) { 
       $("#lat").val(position.coords.latitude); 
       $("#long").val(position.coords.longitude); 
      } 
    }); 

这使得对纬度和经度坐标在各自隐藏的文本框,#lat#long

现在,我想抓住他们在我的代码隐藏.NET代码。我试图做这样的:

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!Page.IsPostBack) 
    { 
     // some other code 
    } 

    // maps 
    addStoreMap.enableDragging = false; 
    addStoreMap.enableGoogleBar = false; 

    // grab the coordinates here. 
    decimal lat = Convert.ToDecimal(hdnLat.Value); 
    decimal lng = Convert.ToDecimal(hdnLong.Value); 
} 

然而,这总是返回空值。我似乎无法将坐标值加载到我的.NET代码中。尽管我通过JS提醒他们,但我获得了这些值。这是因为Page_Load事件发生在我的JS执行之前?如果是这样,我将如何解决这个问题?

感谢

回答

1

ready事件上document没有.preventDefault(),让行引发错误。它从来没有将它写入geolocation代码。删除行:

e.preventDefault(); 

演示:http://jsfiddle.net/ThinkingStiff/mGj2W/

HTML:

<input id="lat" type="hidden" /><input id="long" type="hidden" /> 
<div id="result"></div> 

脚本:

$(document).ready(function() { 

    if (true) { //modernizr check here 

     navigator.geolocation.getCurrentPosition(getCoords); 

    } 
    else { 

     // no support 

    } 

    function getCoords(position) { 

     $('#lat').val(position.coords.latitude); 
     $('#long').val(position.coords.longitude); 

     $('#result').text($('#lat').val() + ', ' + $('#long').val()); 

    } 

}); 

输出:

39.583129, -124.4872483 
+0

PreventDefault是我偶然从一些按钮上的点击事件尝试留下的代码。对于那个很抱歉。我设法做你在做的事情;但是,ASP.NET部分在这里创建问题。我似乎无法让我的JS值到我的.NET代码中,因为Page_Load事件似乎在JS完成加载坐标之前调用,因此总是返回一个空值。 – cabaret

+0

'Page_Load'在服务器上完成,'document.ready'在客户端完成。他们真的没有任何关系。你必须加载你的页面,然后有一些东西发回服务器。什么触发了这个帖子? – ThinkingStiff

+0

我没有发布任何内容到服务器。我只是从我的.NET代码中的隐藏字段中获取值。此时此刻相当困惑......因为如果他们与彼此没有任何关系,为什么它不会在.NET代码中给我正确的值? :(我会睡在上面,明天再想一想,谢谢你的时间! – cabaret