1

希望我在这里不会太混乱。我有一个 Backbone.js 应用程序并一起使用 Openlayers。

我有一个矢量视图。在那个视图中,我有一个 openlayers featuresAdded 事件。在该事件中,我试图调用视图中的另一个函数(地理查询)。以下代码不起作用。有任何想法吗?

//event setup
this.layer.events.on({
"beforefeaturesadded": this.beforeFeaturesAdded,
"featuresadded": this.featuresAdded
});

featuresAdded: function(event){
    this.geoquery(polystring);      
},

geoquery: function(polystring){
}
4

1 回答 1

1

问题的最可能原因是 OpenLayers 没有this为回调函数设置正确的上下文值。当您注册到featuresadded事件时,您需要将范围值提供给events.register.

来自 OpenLayers文档

register: function (type,obj,func,priority)

当事件被触发时,将在 'obj' 的上下文中调用 'func' 函数。假设我们要注册一个事件,将 OpenLayers.Bounds 对象指定为“obj”。当事件被触发时,回调函数中的上下文将是我们的 Bounds 对象。这意味着在我们的回调函数中,我们可以通过“this”变量访问 Bounds 对象的属性和方法。

因此,如果您希望this范围指向您的视图,则需要将视图作为第二个参数传递。假设您正在从视图中注册事件:

layer.events.register('featuresadded', this, this.featuresAdded);

或从视图外部:

layer.events.register('featuresadded', view, view.featuresAdded);
于 2013-02-26T21:03:14.083 回答