2013-11-20 3 views
0

현재 asp.net 프로젝트에서 GeoLocation을 구현하려고합니다. 이 코드는 geolocation을 사용하여 사용자의 위치를 ​​가져오고 위도 및 경도 레이블을 업데이트합니다. 경도 레이블이 업데이트되면 해당 값을 기반으로 연산을 수행하는 C# 이벤트가 실행됩니다.GeoLocation, C# 이벤트 - 구현 방법

문제는 너무 빠르게 발생하는 것으로 보입니다. 그 이유는 모르겠습니다! 나는 또한 그것을 시험하기 위해 장치에 조금 붙어 있지만, 그것은 또 다른 이야기이다. 간단히 말하자면 모바일 장치에서 페이지는 내 위치에 대한 액세스 권한을 부여할지 묻는 반면 페이지가 백그라운드에서 새로 고쳐 지도록합니다.

코드는 다음과 같습니다 상단에

<asp:TextBox ID="lblLat" runat="server" BorderColor="White" BorderStyle="None" ForeColor="Black" Width="100px"></asp:TextBox> 
     <asp:TextBox ID="lblLon" runat="server" BorderColor="White" BorderStyle="None" ForeColor="Black" Width="100px" OnTextChanged="btnByProximity_Click"></asp:TextBox> 

<button id="btnProximity" onclick="GetLocation()" runat="server" style="width: 30%">Proximity</button> 

     <script type="text/javascript"> 

      function GetLocation() 
      { 
       if (navigator.geolocation) 
       { 
        navigator.geolocation.getCurrentPosition(ShowPosition, ShowError); 
       } 
       else { alert("Geolocation is not supported by this browser."); } 
      } 
      function ShowPosition(position) 
      { 
       document.getElementById("lblLat").value = position.coords.latitude; 
       document.getElementById("lblLon").value = position.coords.longitude; 
       //document.getElementById("lblChange").value = document.getElementById("lblChange").value + 1 
      } 
      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> 

우리는 두 위도와 경도 라벨, lblLat 및 lblLon있어. lblLon이 변경되면 btnByProximity_Click 이벤트가 발생합니다. 우리의 btnProximity는 위치를 얻고 lblLat와 lblLon을 업데이트하기로되어있는 GetLocation 이벤트를 호출합니다.

+0

서버 쪽과 클라이언트 쪽 이벤트가 혼합되어 있습니다. 작동하지 않을 것 같습니다. 정확히 원하는 행동은 무엇입니까? 실제로 나는 당신이'OnTextChanged' 이벤트를 필요로하지 않는다고 생각합니다. 클라이언트 액션이 뭔가 서버 측을 업데이트해야하는 경우 AJAX가 도움이 될 수 있습니다 ... –

+0

원하는 동작은 위도와 경도를 가져 와서 사용할 수 있도록 각 레이블에 넣고 C# 이벤트가 어떻게 든 실행되는 것입니다 . OnTextChanged에서이를 수행하는 것이 내가 생각할 수있는 유일한 방법입니다. – user1560834

답변

0

이 포스팅은 직접 관련이없는 불구하고, 당신을 위해 일부 사용 될 수 있습니다

navigator.geolocation.getCurrentPosition sometimes works sometimes doesn't

는 관련 될 수있는 부분을 인용 :

'[...]를 getCurrentPosition의 기본 타임 아웃은 무한대 (!)입니다. 즉, getCurrentPosition이 백엔드 어딘가에있는 경우 오류 처리기가 호출되지 않습니다. '

그렇게 명심하십시오.

C# 부분에 대해서는 이미 실행 중이거나 실행 중인지 여부는 알 수 없으므로이를 수행하는 데는 몇 가지 방법이 있습니다. 예 : AJAX call to a handler page. 또는 JQuery를 사용하는 경우 $.Get 호출. 또는 숨겨진 필드에 값을 저장 한 다음 나중에 코드 숨김 값을 캡처하십시오.