2014-03-26 85 views
2

我已经初始化谷歌地图load函数,它工作正常。也有多个标记与群集。我没有在这里放置标记和集群代码。这些是标准代码。我的代码:移动谷歌地图中心点onclick

jQuery(document).ready(function(){ 
    initialize(); 
}); 

function initialize() { 
    var center = new google.maps.LatLng(59.875405, 10.842099); 
    var zoom = 10; 
    var map = new google.maps.Map(document.getElementById('map-canvas'), { 
     zoom: zoom, 
     center: center, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 
} 
function mapAnimate(){ 
    var map = google.maps.Map(document.getElementById("map-canvas")); 
    google.maps.event.addListenerOnce(map, 'tilesloaded', function() { 
     window.setTimeout(function() { 
      map.panTo(new google.maps.LatLng(58.9633, 5.7189)); 
     }, 500); 
    }); 
} 

然后我想将地图移动到另一个中心位置而不重新生成地图。有一个链接调用函数mapAnimate()

HTML:

<a href="javascript:void(0);" onclick="mapAnimate()">test</a> 

但它不工作。我得到这样的错误:

TypeError: c[Eb] is not a function...... 

其实我没有得到地图实例。

回答

2

在函数之外声明您的map变量。这应该够了吧。

jQuery(document).ready(function(){ 
    initialize(); 
}); 

var map; 

function initialize() { 
    var center = new google.maps.LatLng(59.875405, 10.842099); 
    var zoom = 10; 
    map = new google.maps.Map(document.getElementById('map-canvas'), { 
     zoom: zoom, 
     center: center, 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
    }); 
} 
function mapAnimate(){ 

    google.maps.event.addListenerOnce(map, 'tilesloaded', function() { 
     window.setTimeout(function() { 
      map.panTo(new google.maps.LatLng(58.9633, 5.7189)); 
     }, 500); 
    }); 
} 

但是,如果你从一个点击事件调用mapAnimate()功能,我不明白你为什么会需要在地图对象上的监听器。

+0

在你回答的时候,我实际上已经明白了。但无论如何非常感谢。 –