2015-01-15 151 views
0

我有一个使用谷歌地图API显示邮编的问题。 但是,它给出了一个错误:在line谷歌地图地理编码 - offsetWidth

未处理的异常...,列...在https://maps.gstatic.com/maps-api-v3/api/js/19/6/main.js

0x800a138f - JavaScript的运行时错误:未定义或空引用

无法获取财产 'offsetWidth'

你能给我一些指导吗?

代码文件:

public string location = string.Empty; 

    protected void Page_Load(object sender, EventArgs e) 
    { 
     using (OleDbConnection conn = new OleDbConnection()) 
     { 
      String connection = System.Configuration.ConfigurationManager.ConnectionStrings["google_string"].ConnectionString; 

      conn.ConnectionString = connection; 
      conn.Open(); 

      String sql = "select * from tbl_Post"; 
      OleDbCommand cmd = new OleDbCommand(sql,conn); 
      var rdr = cmd.ExecuteReader(); 
      rdr.Read(); 

      if(!string.IsNullOrEmpty(rdr["location"].ToString())) 
      { 

       location = rdr["location"].ToString(); 
      } 

     } 
    } 
} 

}

asp文件:

<div> 
     <%--map canvas--%> 
     <style type="text/css"> 
      html, body, #map-canvas { 
       height: 100%; 
       margin: 0; 
       padding: 0; 
      } 
     </style> 


     <script type="text/javascript" 
      src="https://maps.googleapis.com/maps/api/js?key=...."> 

     </script> 

     <script type="text/javascript"> 
      var geocoder; 
      var map; 

      function initialize() { 
       geocoder = new google.maps.Geocoder(); 

       var latlng; 
       var mapOptions = { 
        //street level 

        center: new google.maps.LatLng(-34.397, 150.644), 
        zoom: 18, 

       } 


       map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions); 

       //load post code address (CALLING FUNCTION) 
       codeAddress(); 
      } 


      google.maps.event.addDomListener(window, "load", initialize); 

      function codeAddress() { 


       geocoder.geocode({ 'address': '<%= location%>' }, 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 succesfull for the following reason" + status); 
        } 
       }); 
      } 
     </script> 

    </div> 

回答

2

这个问题通常是由于javascript运行之前没有被呈现在地图div那需要访问它。

你几乎就在那里,因为你没有id="map-canvas"元素。所以给你的div一个id,然后它应该按预期工作。

<div id="map-canvas"></div> 
+0

这是绝对正确的,我忘了把这一行。现在它正在工作。 – serb 2015-01-16 17:47:13

+0

非常感谢。 – serb 2015-01-16 17:49:08

+0

非常欢迎您!很高兴我能帮上忙 – Izzy 2015-01-16 21:20:46