我的网页中有一个div,其中包含许多标签,每个标签中都包含一个开放式地图。
问题是,当我使用以下代码将点击事件附加到地图时,它无效。
// lineChart is an object of AreaChart Or XYChart
lineChart.setOnMouseMoved(new EventHandler<MouseEvent>() {
@Override
public void handle(MouseEvent event) {
Tooltip t= new Tooltip("X:"+lineChart.getXAxis().getValueForDisplay(event.getX()-lineChart.getXAxis().getLayoutX())+", Y:"+
lineChart.getYAxis().getValueForDisplay(event.getY()));
t.show(stage);
}
});
但是,当我使用以下代码将事件附加到工作正常时。
//create map in given div ID//
createMap : function(id) {
var _this = this;//To refer this dojo AMD module
//Array of maps.
//_this.index to track the total no. of maps.
_this.maps[_this.index] = new ol.Map({
controls: [],
interactions: [],
//layers: [_this.raster],
target: id,
view: new ol.View({
center: [0, 0],
zoom: 4,
})
});
//get the latlong on
//map click
var thisMap = _this.maps[_this.index];
//Attaching the event.
_this.maps[_this.index].on("click", function(evt){
console.log(evt);
});
}
但是我不想使用第二种方法来注册事件,因为第一种方法是openlayer的一部分,我可以使用mouseEvent参数做很多事情,就像我可以直接得到纬度和经度。
早先两个都习惯了工作,但是在第一个方法停止工作后我使用dojo小部件重新创建了我的GUI。
任何人都可以帮我解决错误吗?或者使用第一种方法还需要什么?
答案 0 :(得分:0)
尝试这种方式:
createMap : function(id) {
var thisMap = new ol.Map({
controls: [],
interactions: [],
//layers: [_this.raster],
target: id,
view: new ol.View({
center: [0, 0],
zoom: 4,
})
});
thisMap.on('click', function(evt){
});
this.maps.push(thisMap);
}