setZoom在传递javascript变量时表现得很特殊

时间:2014-06-20 19:32:41

标签: google-maps-api-3

我试图在单独的页面中创建链接到地图。当用户单击链接时,它将重定向到地图并显示与该链接对应的地质多边形。但是,经过几个小时的调试后,我发现setZoom函数阻止我这样做,我无法弄清楚原因。如果您点击按钮'请参阅地图上的Tg'在http://www.geology.ar.gov/test/javascript_variablePassing1.html,它会创建网址http://www.geology.ar.gov/geology/strat_geomap.htm?formation=tg'。当地图页面加载时,它会解析出“tg'并将其传递给函数showStratChart(tg)和processGeoFm(tg)。但是在函数processGeoFm()中,它使用setZoom函数,并且地图视图跳转到另一个位置。目前我已经评论过processGeoFm()进行测试......

 var lblTextPass = new String(window.location);
var equalIndex = lblTextPass.indexOf("=") + 1;
//window.alert(theleft);
if (equalIndex > 0) {
    //var delay = 2000;
    //setTimeout(function(){
        var fmLabel = lblTextPass.substring(equalIndex, lblTextPass.length);
//      //window.alert(fmLabel);
        //processGeoFm(fmLabel);
        showStratChart(fmLabel);
        map.setCenter(new google.maps.LatLng(36.027791, -91.188240));

        //if (map.getZoom()) {
            map.setZoom(9); 
        //}


     //},delay);

} else {
    processGeoFm("Ozarks");

}

如果我注释掉map.setZoom(9),地图就不会跳到另一个lat / lng。如果您直接转到地图http://www.geology.ar.gov/geology/strat_geomap.htm,地图会调用processGeoFm(" Ozarks")并且它不会导致地图视图跳转,也不会在您调用processGeoFm()时发生从地图上方的下拉菜单中选择某些内容,例如Gravel(tg)。我真的可以在这方面提供一些帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

另一个堆栈溢出问题导致我这个解决方案,我必须添加到我的processGeoFm函数....

 var zmListener = google.maps.event.addListenerOnce(map, "idle", function() {
            //this corrects bug with setZoom function when passing a variable from another page
            map.setZoom(7);

            map.setCenter(new google.maps.LatLng(34.75, -91.184)); //this ensures correct lat/lng
        }); 

    map.setCenter(new google.maps.LatLng(34.75, -91.184));

不知道为什么我不得不这样做