友 现在我使用谷歌API获取位置信息。我正在获取位置信息,但我无法将其存储在变量或隐藏字段中。任何人都可以帮助我知道我在哪里做错了。
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script language="javascript" type="text/javascript">
var map;
var geocoder;// = new google.maps.Geocoder();
var address;
function initialize() {
var latlng = new google.maps.LatLng(document.getElementById("<%=txtLatitude.ClientID %>").value, document.getElementById("<%=txtLongitude.ClientID %>").value);
var myOptions = {
zoom: 5,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map"), myOptions);
var marker = new google.maps.Marker(
{
position: new google.maps.LatLng(document.getElementById("<%=txtLatitude.ClientID %>").value, document.getElementById("<%=txtLongitude.ClientID %>").value),
map: map,
title: 'Click me'
});
geocoder = new google.maps.Geocoder();
geocoder.geocode({ "latLng": latlng }, function(data, status) {
if (status == google.maps.GeocoderStatus.OK) {
address = data[0].formatted_address;
alert(address);
}
});
var infowindow = new google.maps.InfoWindow({
content: 'Location info:' + address + '<br/>LatLng:' + document.getElementById("<%=txtLatitude.ClientID %>").value + ',' + document.getElementById("<%=txtLongitude.ClientID %>").value
});
google.maps.event.addListener(marker, 'click', function() {
infowindow.open(map, marker);
});
}
window.onload = initialize;
</script>
答案 0 :(得分:2)
您有错误。在分配到标记之前,您正在使用内容初始化infowindow。在事件处理程序中设置内容。
这就是您的代码应该如何 -
google.maps.event.addListener(marker, 'click', function () {
infowindow.setContent('Location info:' + address + '<br/>LatLng:' + document.getElementById("<%=txtLatitude.ClientID %>").value + ',' + document.getElementById("<%=txtLongitude.ClientID %>").value);
infowindow.open(map, marker);
});
答案 1 :(得分:0)
数组的第一个元素的索引为0,而不是1,因此应使用data[1].formatted_address;
而不是data[0].formatted_address;
答案 2 :(得分:0)
您的错误消息(应该在您的问题中,而不是隐藏在评论中)暗示您的页面上没有任何ID <%=hdnAddress.ClientID %>
等同于的元素。 <%=hdnAddress.ClientID %>
的价值是什么,你能告诉我们你的HTML应该包含它吗?