将事件绑定到openlayer3映射

时间:2015-07-13 05:28:33

标签: javascript openlayers-3

我的网页中有一个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。

任何人都可以帮我解决错误吗?或者使用第一种方法还需要什么?

1 个答案:

答案 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);
}