#javascript #binding #asp.net-controls #google-geocoder
#javascript #привязка #asp.net-элементы управления #google-геокодер
Вопрос:
<body onload="initialize()">
<form id="form1" runat="server">
<div id="map_canvas" style = "width:320px; height:480px">
</div>
<div>
<asp:TextBox ID="address" runat="server"></asp:TextBox>
<asp:Button Text="find" runat="server" OnClientClick="codeAddress()" />
</div>
</form>
</body>
и это мой javascript:
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var geocoder;
var map;
function initialize() {
geocoder = new google.maps.Geocoder();
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
function codeAddress() {
var address = document.getElementById("<%= address.ClientID %>").value;
geocoder.geocode({ 'address': address }, function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
alert("Geocode was not successful for the following reason: " status);
}
});
}
</script>
функция codeAddress() вообще не работает!
в чем проблема?
Комментарии:
1. Что вы имеете в виду под
not working at all
? Вы установили точку останова в этой функции? ( IE-Developer-Toolbar / Firebug )2. да, это не попадает в функцию!
3. теперь он говорит
Unable to get value of the property 'offsetWidth': object is null or undefined
4. @Tim это пропускает
geocoder.geocode()
вcodeAddress
функции5. @alex: у меня нет опыта работы с API геокодирования Google, и я не вижу какой-либо очевидной ошибки или опечатки. Но, возможно, здесь или здесь есть что-то интересное. Редактировать: я вижу, вторая ссылка — это то, откуда у вас есть ваш код 😉
Ответ №1:
Попробуйте…
document.getElementById("<%= address.ClientID %>")
Измените на:
document.getElementById("address").value;
Комментарии:
1. это элемент управления asp, поэтому я должен его привязать, иначе значение изменится во время выполнения
2. Действительно? (asp, не asp.net ?) Вы используете мастер-страницы или что-то в этомроде? В противном случае вы могли бы установить свойство «ClientID» для элемента управления, поскольку оно отличается от свойства ID.