百度地图的MapVGL 添加自定义模型点击交互(ThreeJS)

书接上文:上一篇写到了自定义模型的加载,这次来研究下相关的交互功能,一般来说就是鼠标点击模型,根据点击的模型返回不同的消息实现对应的交互操作,这里我就是改变了下模型的颜色。废话不多说,先上色图:

这里就是简单的修改了下颜色(原始是蓝色,点击之后变成原谅色),具体修改还是看各位看官的需求。

过程:ThreeJS给的点击获取模型信息的方式是通过发出射线,与模型碰撞,返回碰撞信息来检测是否点击到模型或者点击的是哪一个模型,按照这个思路,在MapVGL中也大概用这个思路来实现点击交互的功能。

代码:

//获取鼠标坐标然后进行处理        
var mouse = new THREE.Vector2();     
mouse.x = (event.clientPos.x / window.innerWidth) * 2 - 1;        
mouse.y = -(event.clientPos.y / window.innerHeight) * 2 + 1;

//实例化射线        
var raycaster = new THREE.Raycaster();

//从相机发射射线   
raycaster.setFromCamera(mouse,threeLayer.camera);

//进行射线检测
var intersects = []; 
raycaster.intersectObjects(group.children,true,intersects);

//检测的的数组内有对象则说明检测成功
if(intersects.length > 0)
{
     //DoSomething()
}

这里面的坑:刚开始实现的时候发现点击模型并没有返回正确的模型信息,点击其他位置,比如空白的地方居然返回了模型信息,后来排查出原因是地图的图层不是全屏,但是鼠标的坐标却是以全屏来计算的,导致计算的鼠标坐标和地图的图层对应不上,就出现上述的情况,我这里就简单粗暴把地图图层设置全屏,就能正常点击显示了。ThreeJS也有这样的问题,如果需要自适应的话需要额外判断鼠标坐标了,这里就不赘述了,资料也很多。各位看官自行百度。哈哈。

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Echarts 是一个开源的可视化图表库,它提供了丰富的图表类型和交互能力。其中,百度在线地图是 Echarts 支持的一种地图类型,可以通过 Echarts 来展示和操作百度地图数据。 要在百度在线地图中实现自定义标点并点击弹出图片,我们可以按照以下步骤进行: 1. 获取地图数据:首先,我们需要获取百度地图的数据,可以通过百度地图开放平台的接口来获取相关数据,如地点的经纬度、图片的链接等。 2. 准备 Echarts 配置:在准备初始化 Echarts 图表的配置项时,我们需要指定地图的类型为百度在线地图,并将获取的地图数据填入到配置项中。 3. 自定义标点:通过配置项中的 series 数据项,我们可以自定义地图上的标点。可以在 series 数据项中设置自定义的符号样式、位置和弹出图片等信息。 4. 添加点击事件:在配置项中,可以为标点添加点击事件的回调函数。当用户点击某个标点时,弹出对应图片的内容。 5. 实例化 Echarts 图表:最后,将准备好的配置项传入 Echarts 的实例化函数中,即可在页面上展示百度在线地图,并实现自定义标点并点击弹出图片的功能。 总结起来,利用 Echarts 的百度在线地图功能,我们可以通过自定义标点并添加点击事件的方式,轻松实现点击某个标点弹出图片的效果。这样可以使地图更加丰富和互动,提升用户体验。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值