Javascript 如何防止谷歌地图在地理代码查找后重新初始化?

Javascript 如何防止谷歌地图在地理代码查找后重新初始化?,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我使用的是谷歌地图Javascript API v.3。下面是我编写的javascript。目标是初始化地图,然后通过谷歌地图地理编码器进行地址查找,使用该lat-long重新居中地图,并设置一个标记。我想我已经完成了大部分工作,除了在重新居中映射并放置一个标记后,页面触发另一个onLoad事件,这会导致initialize()函数再次运行并重置所有变量。在盯着这段代码看了半天之后,我不确定是什么导致了额外的onLoad事件。是什么原因造成的 我对编写javascript和使用GoogleMap

我使用的是谷歌地图Javascript API v.3。下面是我编写的javascript。目标是初始化地图,然后通过谷歌地图地理编码器进行地址查找,使用该lat-long重新居中地图,并设置一个标记。我想我已经完成了大部分工作,除了在重新居中映射并放置一个标记后,页面触发另一个onLoad事件,这会导致initialize()函数再次运行并重置所有变量。在盯着这段代码看了半天之后,我不确定是什么导致了额外的onLoad事件。是什么原因造成的

我对编写javascript和使用GoogleMaps也很陌生,所以我很高兴有其他关于代码质量的建议。我知道我已经尝试在全球范围内确定几个变量的范围,但我不确定我是否做得正确

下面是代码(注意:我计划最终替换setTimeout函数,但我还没有掌握编写异步调用的诀窍……我想我下一步会解决这个问题)


var映射;
var地理编码器;
var标记;
var latlng;
函数初始化(){
geocoder=新的google.maps.geocoder();
变量映射选项={
中心:新google.maps.LatLng(47.606,-122.314),
缩放:12
};
if(this.map==null){
this.map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
}
}
功能检查响应(结果、响应){
if(response==google.maps.GeocoderStatus.OK){
this.latlng=results[0].geometry.location;
this.map.setCenter(结果[0].geometry.location);
this.marker=new google.maps.marker({map:map,position:results[0].geometry.location});
}
否则{
警报(“地理编码因以下原因未成功:“+响应”);
}
}
函数searchAddress(){
var address=document.getElementById('address1')。值;
var state=document.getElementById('state1')。值;
var zip=document.getElementById('zip1').value;
var addressInput=address+','+state+','+zip;
geocoder.geocode({'address':addressInput},函数(结果,状态){
//删除此setTimeout函数并用回调函数替换它
setTimeout(检查响应(结果、状态),3000);
});
}
google.maps.event.addDomListener(窗口“加载”,初始化);

当使用javascript函数作为表单的onsubmit函数时,如果不想从服务器重新加载页面,则必须从该函数返回false。

发布的代码只有一个onload事件(并且没有标记,javascript区分大小写,google.maps.marker与之不同)-代码实际上不应该触发任何onLoad事件,它应该只在页面有onLoad事件时执行。我试图确定的是,为什么在执行函数searchAddress之后,页面会发送另一个onLoad事件?此事件触发initialize函数,该函数重置我以前对映射所做的所有更改。还感谢您让我注意到Javascript是区分大小写的;修复了我正在处理的一个bug。您如何执行
searchAddress
函数?发布的代码从不调用它。请提供一份说明您试图解决的问题的报告。我可以猜测,它是表单的onsubmit函数,不会返回false,导致页面在浏览器中重新加载;我需要在onClick表单中添加“returnfalse”。我一定会在将来包含HTML/CSS。谢谢