переопределить google.maps.Marker.prototype.setPosition, ошибка возврата - PullRequest
1 голос
/ 15 августа 2010

catch 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

почему?спасибо

Ответы [ 3 ]

0 голосов
/ 27 ноября 2013

Вы можете написать прямо, как,

markerObject.setPosition(latlng);

См. Методы маркера

0 голосов
/ 12 февраля 2016

Вы всегда можете расширить прототип и добавить свои собственные методы.

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

Таким образом вы сохраняете область действия без изменений.

0 голосов
/ 22 августа 2010

Начальная google.maps.Marker.prototype.setPosition будет вызываться в области видимости маркера, но, сохраняя ее в локальной переменной, вы изменяете ее область действия на локальную.

Следовательно, функция не имеет необходимой переменной this. Вы можете попытаться исправить это, используя dojo.hitch или прочитав этот ответ stackoverflow

Кроме того, вы должны прочитать это об объемах и закрытиях.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...