我无法在变量中存储谷歌地图位置信息

时间:2012-10-30 09:48:13

标签: javascript asp.net google-maps google-maps-api-3

友 现在我使用谷歌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>

3 个答案:

答案 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应该包含它吗?