2010-08-15 171 views
1

抓google.maps.Marker.prototype.setPosition調用覆蓋google.maps.Marker.prototype.setPosition返回錯誤

(function(){ 
var setPos = google.maps.Marker.prototype.setPosition; 
google.maps.Marker.prototype.setPosition = function(latLng){ 
    console.log(["setPos", latLng]); 
    setPos(latLng); 
}; 
})(); 

返回錯誤

this.set is not a function 
http://maps.gstatic.com/intl/cs_ALL/mapfiles/api-3/2/0/main.js 
Line 28 

爲什麼呢?謝謝

回答

0

最初的google.maps.Marker.prototype.setPosition將在標記的範圍內被調用,但通過將其存儲在局部變量中,您將其範圍更改爲本地範圍。

因此,函數沒有它所需的this變量。您可以嘗試使用dojo.hitch,或閱讀this stackoverflow answer

另外要解決這個問題,你應該閱讀有關this範圍和封鎖。

0

您可以隨時擴展原型,並添加自己的方法。

(function(){ 
    google.maps.Marker.prototype.oldSetPosition = 
    google.maps.Marker.prototype.setPosition; 

    google.maps.Marker.prototype.setPosition = function(latLng){ 
    console.log(["setPos", latLng]); 
    this.oldSetPosition(latLng); 
    }; 
})(); 

這樣你保持範圍完好無損。