like the github issue:

https://github.com/openlayers/ol3-cesium/issues/344#issuecomment-214098148

thanks jmgomezpoveda .

i find the way to deal with it.

key point is: brower events and pixel happened.

sucess click and move event.

code:

//二维三维的地图点击事件
// https://github.com/openlayers/ol3/blob/v3.19.0/src/ol/events/eventtype.js
define(['watermap'],function(watermap) {
var clickHandler; var layerNameFliter;
/**
* initMapEvents - 初始化地图事件 鼠标移动以及鼠标单击事件
*
*
* @return {type} Description
*/
var initMapEvents = function() { $('#' + watermap.config.target).on('mousemove touchmove', function(browserEvent) {
var pixel = watermap.map.getEventPixel(browserEvent.originalEvent);
HandleFeaturesAtPixelForMove(pixel);
});
$('#' + watermap.config.target).on('click touchstart', function(browserEvent) {
var pixel = watermap.map.getEventPixel(browserEvent.originalEvent);
var features = getFeaturesAtPixelForClick(pixel);
if (watermap.MapEvent.clickHandler) {
watermap.MapEvent.clickHandler(features);
}
});
};
/**
* setLayerFliters - 设置点击以及鼠标滑过去的图层过滤
*
* @param {type} layerNameArray Description
*
* @return {type} Description
*/
var setLayerFliters = function(layerNameArray) {
this.layerNameFliter = layerNameArray;
};
var addClickHandle = function(handler) {
if (handler && typeof(handler) == 'function') {
this.clickHandler = handler;
} else {
console.log("click handler you add is not a function");
}
};
/**
* HandleFeaturesAtPixelForMove - 依据pixel 获取对应的ol.features - Description
*
* @param {type} pixel Description
*
* @return {type} Description
*/
var HandleFeaturesAtPixelForMove = function(pixel) {
var features = [];
if (watermap.ol3d && watermap.ol3d.getEnabled()) {
var pickedObject = watermap.ol3d.getCesiumScene().pick(new Cesium.Cartesian2(pixel[0], pixel[1]));
watermap.ol3d.canvas_.style.cursor = 'auto';
if (typeof pickedObject !== "undefined") {
// features.push(pickedObject.primitive.olFeature);
watermap.ol3d.canvas_.style.cursor = 'pointer';
}
} else {
watermap.map.getViewport().style.cursor = 'auto';
watermap.map.forEachFeatureAtPixel(pixel, function(feature) {
watermap.map.getViewport().style.cursor = 'pointer';
},
undefined,
function(layer) { //标注图层过滤
var layerName = layer.get('name');
if (watermap.MapEvent.layerNameFliter && watermap.MapEvent.layerNameFliter.indexOf(layerName)>=0) {
return true;
}
return false;
});
}
return features;
};
/**
* getFeaturesAtPixelForClick - 依据pixel 获取对应的ol.features - Description
*
* @param {type} pixel Description
*
* @return {type} Description
*/
var getFeaturesAtPixelForClick = function(pixel) {
var features = [];
if (watermap.ol3d && watermap.ol3d.getEnabled()) {
var pickedObject = watermap.ol3d.getCesiumScene().pick(new Cesium.Cartesian2(pixel[0], pixel[1]));
if (typeof pickedObject !== "undefined") {
features.push(pickedObject.primitive.olFeature);
}
} else {
watermap.map.forEachFeatureAtPixel(pixel, function(feature) {
var featureShow;
features.push(feature);
},
undefined,
function(layer) { //标注图层过滤
var layerName = layer.get('name');
if (watermap.MapEvent.layerNameFliter && watermap.MapEvent.layerNameFliter.indexOf(layerName)>=0) {
return true;
}
return false;
});
}
return features;
}; return {
initMapEvents:initMapEvents,
clickHandler: clickHandler,
layerNameFliter: layerNameFliter,
setLayerFliters:setLayerFliters,
addClickHandle: addClickHandle,
};
});

  

最新文章

  1. [转]CSS如何设置html table表格边框样式
  2. gulp的基本使用
  3. [转]MOSS通过此命令注册模板,web应用程序可以根据stp模块生成网站集
  4. html php 重定向 跳转 刷新
  5. 用ping命令来模拟traceroute的功能
  6. StyleCop的常见错误
  7. C++ 字符串操作常见函数
  8. 关于VS 中 HttpHandler 的设置 500.23
  9. svn钩子(hooks)
  10. Jekyll搭建过程详解
  11. MVC+EF 入门教程(一)
  12. Ajax跨域请求,无法传递及接收cookie信息
  13. 记录4-Ubuntu 16.04用gparted调整分区
  14. JSP 页面跳转的实现方法
  15. 神烦之float
  16. twitter分布式主键id生成器
  17. Ubuntu18.04 关闭和开启图形界面
  18. centos系统-java -jdk 环境配置
  19. LOJ2540. 「PKUWC2018」随机算法【概率期望DP+状压DP】
  20. 学习JavaWeb aop两种配置方式

热门文章

  1. OpenMP For Construct dynamic 调度方式实现原理和源码分析
  2. wsl ubuntu vscode 安装 Fira Code
  3. JAVA虚拟机20-基于栈的解释器执行过程示例
  4. 3分钟教你安装 Compressor视频转码编辑工具 V4.6.3中文破解版 小白一看就会
  5. 《关于我因为flink成为spark源码贡献者这件小事》
  6. Node版本管理工具 - Nvm的下载、安装配置与使用
  7. 关于联想对Jim博士的质疑
  8. 推荐系统[一]:超详细知识介绍,一份完整的入门指南,解答推荐系统相关算法流程、衡量指标和应用,以及如何使用jieba分词库进行相似推荐
  9. JS获取本周、本月、本季度、本年
  10. vue+mysql实现前端对接数据库