私のオブジェクトPolygonExtendから、showやhideのような内部アクションをトリガーできます。これらのアクションはうまくいくようです。しかし、クリックイベント(google.maps.event.addDomListener)内で同じアクションを実行すると、 "TypeError:this.name is undefined"が表示されます。どうすればそれを稼働させることができますか? (すでにこのソリューションを試していない場合)クリックイベント内でオブジェクト関数を呼び出すと、定義されていない
var mapOptions = {
center: new google.maps.LatLng(4.7102000, -74.0308118),
zoom: 18,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById('map'), mapOptions);
var coords = [
{lat: 4.711177836295898, lng: -74.03219819068909},
{lat: 4.710354506576612, lng: -74.03219819068909},
{lat: 4.710354506576612, lng: -74.03176367282867},
{lat: 4.711177836295898, lng: -74.03176367282867}
];
function PolygonExtend(name, path) {
//this.name = name;
this.path = path;
this.name = new google.maps.Polygon({
path: this.path,
});
this.show = function() {
this.name.setMap(map);
};
this.hide = function() {
this.name.setMap(null);
};
return this.name.setMap(map); // makes Polygon show when instantiated
}
a = new PolygonExtend('a', coords); // works and renders Polygon
a.hide(); // works, hides Polygon
a.show(); // works, makes Polygon visible again
var btn = document.getElementById('btn');
google.maps.event.addDomListener(btn, 'click', a.hide); // TypeError: this.name is undefined
「この」キーワードは、ウィンドウオブジェクトにバインドされています。 'this'のインスタンスを変数に保存してthis.hideから参照する必要があります。 – codemax