2010-08-15 73 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); 
    }; 
})(); 

这样你保持范围完好无损。