使用 Three.js 和 webgl 的谷歌地图

2024-01-09

我有数千个点需要在谷歌地图上绘制,并使用以下示例获得了响应非常灵敏的地图https://github.com/ubilabs/google-maps-api- Threejs-layer https://github.com/ubilabs/google-maps-api-threejs-layer。 有没有人对此感兴趣并想知道是否可以有不同颜色的标记和可能的标记单击事件?

感谢在线的任何指示或示例。


使用 webgl 可以在谷歌地图上绘制数百万个可点击的数据点。

数据点由表示画布上位置的 x,y 对、表示大小的 int、屏幕外颜色和屏幕上颜色表示。这些值存储在单独的类型化数组中。

每个数据点都有一个唯一的 RGB 颜色,充当数据点 ID 查找表中的键。

创建一个纹理来存储离屏颜色并将其渲染到离屏缓冲区。发生事件时,加载离屏缓冲区并使用 glReadPixels 检索单击的像素的 RGB 颜色,然后在查找表中查找 id。屏幕缓冲区上的点(用户所看到的)可以共享共同的颜色。

canvas.addEventListener('click', function(ev) {
  # insert code to get mouse x,y position on canvas
  pixels = new Uint8Array(4);
  gl.bindFramebuffer(gl.FRAMEBUFFER, framebuffer);
  gl.readPixels(x, y, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, pixels);
  gl.bindFramebuffer(gl.FRAMEBUFFER, null);
  if (colorToId[pixels[0] + " " + pixels[1] + " " + pixels[2]]) {
    # Pixel clicked is a data point on the map
  }
});

Webgl代码比较长,所以只包含了click事件。

这里有一个现场演示 http://codepen.io/mikefab/pen/raLgvx and a repo https://github.com/mikefab/webgl-readpixels-offscreen-buffer-google-map-example。 (角度和咖啡脚本)

这是使用纯 js 的第二个示例:webgl-拾取地理多边形 https://github.com/unicef/webgl-picking-geo-polygons

Here is 反应 webgl 传单 https://github.com/unicef/react-webgl-leaflet

该解决方案基于 Brendan Kenny 的Google 地图 + HTML5 + 空间数据可视化 https://www.youtube.com/watch?v=aZJnI6hxr-c它解释了上面摘录中 30 分钟标记处的一些代码,以及在 Google 地图上显示 WebGL 数据 http://build-failed.blogspot.com/2013/02/displaying-webgl-data-on-google-maps.html.

该演示具有不到 10 个数据点,但您可以使用 RGB 值的所有组合轻松绘制超过 1600 万个可选取数据点。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Three.js 和 webgl 的谷歌地图 的相关文章

  • 是否可以在不点击的情况下显示多个标记的多个信息窗口?

    我想在谷歌地图中显示多个标记的多个信息窗口 信息窗口应该在不点击标记本身的情况下显示 是否可以 经过研究 我了解到将标记设置为地图视图选定标记可以使信息窗口显示而无需点击它 但是 不能一次选择多个标记作为地图视图的选定标记 有什么可以做的吗
  • Three.js:为相机添加灯光

    我想移动和旋转相机 但将点光源保持在相对于相机的相同位置 我读过很多帖子 说您可以将灯光对象添加到相机而不是场景中 就像这样 pointLight new THREE PointLight 0xffffff pointLight posit
  • 禁用 Ctrl + 滚动以缩放谷歌地图

    Does anybody know how to disable the CTRL Scroll First when the mouse wheel was moved the Map would Zoom in out But now
  • 如何在 Google 地图中突出显示悬停时的标记以获得可排序的表格?

    我有一个使用 jQuery 插件进行排序的表格表排序器 2 0 http tablesorter com docs 在同一页面上 我有一个 Google 地图 它显示表中每个项目的标记 现在 我想要做到这一点 以便当 tr 悬停时 Goog
  • Android - Google 地图触摸和拖动标记

    如何在地图活动上移动标记 而无需长按并按住该标记直到它获得焦点 我只想触摸和拖动 但它需要大约 1 2 秒才能接收焦点并触发拖动事件 这是我的代码 mMap googleMap mMap setMapType GoogleMap MAP T
  • android - 如何在android中打开kml文件

    我的 SD卡中存储了一个 KML 文件 我想通过我的应用程序中的谷歌地图打开它 所以我使用了下面的代码 但我收到错误消息 android非法状态异常无法执行活动的方法 我不想绘制地图 只是想打开一个已经存储在我的SD卡中的kml文件并显示它
  • Android 在谷歌地图上绘制带箭头的折线和方向路径

    I have added polylines but not able to add arrow with direction on google map should be display as below And when it zoo
  • 在 iOS 和 Android 版 Google 地图上突出显示国家/地区

    我正在尝试在地图上突出显示国家 地区 对于iOS我发现很少有演示 Demo1 http sugartin info 2012 02 13 adding overlays on mkmapview using mkpolygon mkpoly
  • Google Maps JavaScript API v3 方向功能

    我使用 Google Maps js API v3 我可以根据路径点显示方向this http code google com intl hu apis maps documentation directions Waypoints 我想要
  • Three.js - 如何使用姿势估计数据为 3D 模型制作动画

    我正在尝试使用姿势估计坐标来对 Three js 中的装配模型进行动画处理 我正在使用的姿势估计技术提供了视频源中人物的实时 x y z 坐标 我正在尝试使用这些坐标相应地移动 3D 模型 我使用下面的代码 其中一些代码是我在相关问题的答案
  • 修复了 Google 地图混搭中的图例

    我有一个带有 Google 地图混搭的页面 其中的图钉按日期 周一 周二等 进行颜色编码 包含地图的 IFrame 是动态调整大小的 因此当浏览器窗口调整大小时 它也会调整大小 我想在地图窗口的一角放置一个图例 告诉用户每种颜色的含义 Go
  • 以编程方式设置谷歌地图片段可见性(API2)

    xml
  • 标记聚类在 Android 中不显示标记?

    我在 Android 的 PagerFragment 中设置了 MapView 我按照 Google 示例进行操作 但使用 V2 API 设置带有群集标记的地图 它向我显示了一张没有标记的黑色地图 我哪里做错了 import android
  • angular2-google-maps 自动完成功能不起作用

    我正在尝试使用 angular2 google maps 将自动完成功能添加到我的项目中 我在 AppModule 中添加 AgmCoreModule forRoot 带有库 places 然后在组件中添加自动完成代码 我仍然收到 无法读取
  • 三种js更新纹理生成Canvas的最佳性能方式

    I have THREE Points with THREE PointsMaterial As a map我使用生成的动态cavas image 我需要重新渲染canvas在每一帧上 我的部分代码 function makeEnemyBa
  • 如何将 ThreeJS 与 PhoneGap 一起使用?

    这个探索是非常自我描述的 我已经用一个简单的 3D 立方体进行了测试 它在浏览器中运行良好 但只在模拟器中显示空白页面 有人说 Threejs 不能与 PhoneGap 一起使用 但也有人说他们使用过并且工作正常 在 Android 中 您
  • 用不同的颜色为 Google 热图着色

    我试图开发一个遵循 Google Map API 的热度 https developers google com maps documentation javascript examples layer heatmap https deve
  • 在 Three.js 中绕点旋转对象的正确方法是什么?

    关于 Three js 的大多数教程 问题都建议使用 Three js 绕点旋转对象的方法是在要旋转的位置创建父对象 附加对象 然后移动子对象 然后 当父级旋转时 子级围绕该点旋转 例如 Make a pivot var pivot new
  • Three.js:缩放几何图形后错误的 BoundingBox

    在我的场景中 我有一个简单的立方体 var test new THREE Mesh new THREE CubeGeometry 10 10 10 new THREE MeshBasicMaterial scene add test 该立方
  • Three.js 各种大小的粒子

    我是 Three js 的新手 正在尝试找出添加 1000 个粒子的最佳方法 每个粒子都有不同的大小和颜色 每个粒子的纹理是通过绘制画布创建的 通过使用粒子系统 所有粒子都具有相同的颜色和大小 为每个粒子创建一个粒子系统是非常低效的 有没有

随机推荐