Jquery 点击按钮获取地图
这是一段代码,当您单击map时,它将调用该函数。我想通过点击按钮调用此函数-是否可以传递持有贴图像素的evtJquery 点击按钮获取地图,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.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?如果是这样的话,我在下面贴了一个可能的答案。如果没有,你能再解释一下你需要做什么吗?