我一直在谷歌地图上关注YouTube教程,但我遇到了一个无法解决的问题。这可能是一个容易解决的问题,但我是使用HTML和JavaScript的新手,并且不能指责它。
YouTube Tutorial - Custom Interactive Maps with the Google Maps API 08 Marker Events
如何使用以下JS库中的_on函数调用map事件(而不是标记事件)。
_on: function(opts) {
var self = this;
google.maps.event.addListener(opts.obj, opts.event, function(e) {
opts.callback.call(self, e);
});
},
addMarker: function(opts) {
var marker;
opts.position = {
lat: opts.lat,
lng: opts.lng
}
marker = this._createMarker(opts);
if (opts.event) {
this._on({
obj: marker,
event: opts.event.name,
callback: opts.event.callback
});
}
},
_createMarker: function(opts) {
opts.map = this.gMap;
return new google.maps.Marker(opts);
}
在07教程之后,我能够调用map事件,因为_on函数如下:
_on: function(event, callback) {
var self = this;
google.maps.event.addListener(this.gMap, event, function(e) {
callback.call(self, e);
});
}
我可以在教程7之后使用以下代码从我的Script.js文件中调用map事件函数:
map._on('rightclick', function() {
alert('Right Click');
});
但是,既然我的_on函数已在教程8中修改过,我似乎无法弄清楚如何调用map事件函数,因为输入变量已更改为opts。
我尝试了以下但是它无法正常工作:
map._on({
obj: map,
event: 'dragend',
callback: function() {
alert('I was dragged');
}
});
有人可以让我知道我做错了吗?
答案 0 :(得分:0)
我找到了解决方案:
map._on({
obj: map.gMap,
event: 'dragend',
callback: function() {
alert('I was dragged');
}
});
错误在于我的对象需要声明为'map.gMap',而不是仅仅使用'map'。