无法使用基于邮政编码的标记显示Google地图

时间:2014-03-06 13:26:14

标签: javascript jquery google-maps google-maps-api-3

我正在尝试使用基于邮政编码的标记显示Google地图。我已经在 lat lng 坐标上转换了邮政编码,但问题是地图根本没有显示。

以下是我试图这样做的方法:

  function initialize() {
    var lat = '';
    var lng = '';
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode( { 'address': 94301}, function(results, status) {
      if (status == google.maps.GeocoderStatus.OK) {
        lat = results[0].geometry.location.lat();
        lng = results[0].geometry.location.lng();
        var mapOptions = {
          zoom: 8,
          center: new google.maps.LatLng(lat, lng)
        };
        var map = new google.maps.Map(document.getElementById("gmap"), myOptions);
        map.setCenter(results[0].geometry.location);
        var marker = new google.maps.Marker({
          map: map,
          position: results[0].geometry.location
        });
        alert('111');
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
    google.maps.event.addDomListener(window, 'load', initialize);
 }

甚至没有出现警告('111')

我做错了什么?

由于

2 个答案:

答案 0 :(得分:0)

你的问题在这里,你在初始化函数中调用初始化函数

function initialize() {
    ...
    google.maps.event.addDomListener(window, 'load', initialize);
}

将最后一行移出该功能,你会开始看到我认为的一些结果。

function initialize() {
    ...
}
google.maps.event.addDomListener(window, 'load', initialize);

答案 1 :(得分:0)

2个问题:

  1. onload事件的监听器在initialize函数内部,因此它永远不会调用initialize
  2. 当我修复时出现javascript错误

     Uncaught InvalidValueError: in property address: not a string 
    
  3. 然后:

     Uncaught ReferenceError: myOptions is not defined 
    
  4. 所以:

         function initialize() {
            var lat = '';
            var lng = '';
            var geocoder = new google.maps.Geocoder();
            geocoder.geocode( { 'address': "94301"}, function(results, status) {
              if (status == google.maps.GeocoderStatus.OK) {
                lat = results[0].geometry.location.lat();
                lng = results[0].geometry.location.lng();
                var mapOptions = {
                  zoom: 8,
                  center: new google.maps.LatLng(lat, lng)
                };
                var map = new google.maps.Map(document.getElementById("gmap"), mapOptions);
                map.setCenter(results[0].geometry.location);
                var marker = new google.maps.Marker({
                  map: map,
                  position: results[0].geometry.location
                });
                alert('111');
              } else {
                alert("Geocode was not successful for the following reason: " + status);
              }
            });
    
         }
          google.maps.event.addDomListener(window, 'load', initialize);