2015-10-28 4 views
0

Пожалуйста, обратите внимание на следующие коды:Google Map маркер не возвращает его значение

В моей .ascx:

<asp:Label ID="lblLat" runat="server" EnableViewState="false"></asp:Label> 
<asp:Label ID="lblLng" runat="server" EnableViewState="false"></asp:Label> 

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 

var latlng = new google.maps.LatLng(5.4149253, 100.3407387); 
var map = new google.maps.Map(document.getElementById('map'), { 
    center: latlng, 
    zoom: 17, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}); 
var marker = new google.maps.Marker({ 
    position: latlng, 
    map: map, 
    draggable: true 
}); 
google.maps.event.addListener(marker, 'dragend', function (event) { 
    marker.setPosition(event.latLng); 
    var yeri = event.latLng; 
    document.getElementById('lblLat').value = yeri.lat().toFixed(6); 
    document.getElementById('lblLng').value = yeri.lng().toFixed(6); 
}); 

</script> 

После перетаскивания маркера по карте и представить

В моей .ascx .cs: ​​

string lat = lblLat.Text; 
string lng = lblLng.Text; 

Эта 2 строки возвращает нулевые значения. Могу ли я узнать, что я сделал неправильно? Это просто не получает значения от маркера на карте.

ответ

0

The label превращается в span и HTML элементы, такие как span или div не имеет ни не ViewState текст/HTML из них отправляется на стороне сервера. Представленные элементы form представляют собой элементы input, и hidden field является одним из них. Asp.net поддерживает ViewState скрытых полей. Я боюсь, что вы должны использовать скрытые поля для поддержания ценности метки между обратными передачами.

В вашем .ascx:

<asp:Label ID="lblLat" runat="server" EnableViewState="false"></asp:Label> 
<asp:Label ID="lblLng" runat="server" EnableViewState="false"></asp:Label> 
<!-- 1. Add hidden fields to store and submit the latlng values --> 
<asp:HiddenField id="lblLatHidden" runat="server" /> 
<asp:HiddenField id="lblLngHidden" runat="server" /> 

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
<script type="text/javascript"> 

var latlng = new google.maps.LatLng(5.4149253, 100.3407387); 
var map = new google.maps.Map(document.getElementById('map'), { 
    center: latlng, 
    zoom: 17, 
    mapTypeId: google.maps.MapTypeId.ROADMAP 
}); 
var marker = new google.maps.Marker({ 
    position: latlng, 
    map: map, 
    draggable: true 
}); 
google.maps.event.addListener(marker, 'dragend', function (event) { 
    marker.setPosition(event.latLng); 
    var yeri = event.latLng; 
    document.getElementById('lblLat').innerHtml = yeri.lat().toFixed(6); 
    document.getElementById('lblLng').innerHtml = yeri.lng().toFixed(6); 
    // 2. update the hidden fields via javascript 
    document.getElementById('lblLatHidden').value = yeri.lat().toFixed(6); 
    document.getElementById('lblLngHidden').value = yeri.lng().toFixed(6); 
}); 

</script> 

В моем .ascx.cs:

string lat = lblLatHidden.Value; 
string lng = lblLngHidden.Value; 
Смежные вопросы