上有openlayers.org網站爲例 - Click Handler Example
您可以創建extentes OpenLayers.Control一個定製控件類,並在類中創建一個函數,使用OpenLayers.Handler.Click來聽點擊事件。
Handler.Click實際上會同時收聽點擊事件和觸摸事件。
OpenLayers.Control.ListenToClick = OpenLayers.Class(OpenLayers.Control, {
defaultHandlerOptions: {
'single': true,
'pixelTolerance': 0,
'stopSingle': false
},
initialize: function(options) {
this.handlerOptions = OpenLayers.Util.extend(
{}, this.defaultHandlerOptions
);
OpenLayers.Control.prototype.initialize.apply(
this, arguments
);
this.handler = new OpenLayers.Handler.Click(
this, {
'click': this.onClick,
}, this.handlerOptions
);
},
onClick: function(evt) {
$('#info').html(
'<p>' + data[i].title + '<br />' + data[i].addr + '</p>'
);
},
});
創建並添加地圖,當你需要它
var ctmControl = new OpenLayers.Control.ListenToClick({
handlerOptions: {
'single': true,
'pixelTolerance': 0,
'stopSingle': false
}
});
map.addControl(ctmControl);
如果不是enuough你敏感的,你可以試試這個
'pixelTolerance': 10,
最後但並非最不重要的,記得激活它
ctmControl.activate();
當然,您可以用相同的方式停用它。
ctmControl.deactivate();