2010-11-16 33 views
1

我是新的谷歌地图API。我花了一些样品从手动,并试图去改变它,我需要的方式,所以这里是我想做的事: 这是谷歌的例子映射手动Noob问题:如何获取信息,如果谷歌地图加载(初始化)

var geocoder; 
    var map; 
    function initialize() { 
    geocoder = new google.maps.Geocoder(); 
    var latlng = new google.maps.LatLng(40.714353, -74.005973); 
    var myOptions = { 
     zoom: 10, 
     center: latlng, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    } 
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions); 
    } 

    function codeAddress() { 
    var address = document.getElementById("address").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); 
     } 
    }); 
    } 

我已经改变codeAddress功能小并试图把它在页面加载这样的:

function codeAddress(address) { 
     //var address = document.getElementById("address").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); 
      } 
     }); 
     } 
codeAddress("Some Address"); 

但它给我一个JavaScript错误“地理编码器未定义”。我如何让脚本等到地图加载后再运行codeAddress函数?我不想在初始化期间路由我的地址。

我希望这是明确的 预先感谢您。

+0

我很抱歉这个愚蠢的问题。我有地址字符串的问题,所以我纠正它,并得到脚本工作。无论如何感谢 – KoKo 2010-11-17 16:49:21

回答

2

的问题是,你定义它后直接调用codeAddress(因此这是initialise()方法运行之前。

因此你需要一些触发后运行此。一个快速和肮脏的方式做这是设置此为人体的onload事件;这将等到所有资源(包括图片)已经满载,但可能不会是太大的问题因为地图是一个形象,以及

或者。 ,大多数JS框架将为您提供非常方便的方法来在页面生命周期的各个点触发您的处理程序。如果您使用一个f这些,你可能希望调查可用的选项并选择最好的选项,这取决于许多因素。

很重要的是,不要忘记,在致电codeAddress()之前,您必须致电initialise()

+0

我在body中调用和codeAddress。如果我在主体或甚至结束时移动初始化。它给了我Geocode未成功的警报。 – KoKo 2010-11-16 12:26:02

+0

@KoKo - 'alert'是一种改进,因为它意味着'geocoder'变量已被填充并被调用。因此你原来的问题已经解决了。 – 2010-11-16 16:43:17