2014-03-26 116 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

在你回答的時候,我實際上已經明白了。但無論如何非常感謝。 –