我目前正試圖在我的asp.net項目中實現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調用了應該獲取位置的GetLocation事件並更新lblLat和lblLon。
您正在混合服務器端和客戶端事件,我認爲這不會起作用。什麼是確切的期望行爲?其實我不認爲你需要你的'OnTextChanged'事件(這可能導致PostBack因此刷新頁面)。如果你的客戶端動作需要更新服務器端的東西,AJAX可能會有所幫助...... –
希望的行爲是獲取經度和緯度,放入它們各自的標籤中,以便可以使用它們,並以某種方式解開c#事件。在OnTextChanged上做它是我能想到的唯一方法。 – user1560834