Jquery 点击按钮获取地图

Jquery 点击按钮获取地图,jquery,openlayers-3,Jquery,Openlayers 3,这是一段代码,当您单击map时,它将调用该函数。我想通过点击按钮调用此函数-是否可以传递持有贴图像素的evt map.on('singleclick', function(evt) { var place = null; allFeaturesAtPixel = []; map.forEachFeatureAtPixel(evt.pixel, function(feature, layer) { allFeaturesAtPixel.push(feature);

这是一段代码,当您单击map时,它将调用该函数。我想通过点击按钮调用此函数-是否可以传递持有贴图像素的evt

map.on('singleclick', function(evt) {
   var place = null;
   allFeaturesAtPixel = [];
   map.forEachFeatureAtPixel(evt.pixel, function(feature, layer) {
       allFeaturesAtPixel.push(feature);
       place = feature;
   });
   if (place) {
      var i; 
      for (i = 0; i < allFeaturesAtPixel.length; ++i) {
         console.log(allFeaturesAtPixel[i].get('name'));
      }
   }
   else{
       console.log("No feature");
   }
});
map.on('singleclick',函数(evt){
var-place=null;
allFeaturesAtPixel=[];
map.forEachFeatureAtPixel(evt.pixel,函数(特征,层){
所有特性像素推送(特性);
地点=特征;
});
如果(地点){
var i;
对于(i=0;i
如果您将代码重构为单独的函数,这是可能的。然后可以将其绑定到地图单击和按钮单击。对于按钮单击,您可以提供一个模拟事件,该事件具有类型为
ol.pixel
的属性
pixel
,它在OpenLayers中只是一个数组
[x,y]
。以下是方法:

// Create the handler as a reusable function
function myHandler(evt) {
   var place = null;
   allFeaturesAtPixel = [];
   map.forEachFeatureAtPixel(evt.pixel, function(feature, layer) {
       allFeaturesAtPixel.push(feature);
       place = feature;
   });
   if (place) {
      var i; 
      for (i = 0; i < allFeaturesAtPixel.length; ++i) {
         console.log(allFeaturesAtPixel[i].get('name'));
      }
   }
   else{
       console.log("No feature");
   }
}

// Now bind it to the map singleclick
map.on('singleclick', myHandler)

// Now bind it to your button, using a mock evt. I've used jQuery here.
$("#myButton").on('click', function() {
    var mock_evt = {pixel: [12, 13]}
    myHandler(mock_evt);
});
//将处理程序创建为可重用函数
函数myHandler(evt){
var-place=null;
allFeaturesAtPixel=[];
map.forEachFeatureAtPixel(evt.pixel,函数(特征,层){
所有特性像素推送(特性);
地点=特征;
});
如果(地点){
var i;
对于(i=0;i
我读你的问题是这样的:你想要一个函数,既可以通过地图单击调用,也可以通过按钮单独调用。当从按钮调用时,您希望通过像素传入evt?如果是这样的话,我在下面贴了一个可能的答案。如果没有,你能再解释一下你需要做什么吗?