2010-08-15 4 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

을 입력하여 범위 및 클로저에 대해 읽어야합니다.

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); 
    }; 
})(); 

그런 식으로 범위를 그대로 유지합니다.