尧图网络科技YAOTU DIGITAL 获取报价
获取报价
首页 / 资讯中心 / 文章详情

Rerun MapView 地图视图详解:从 Blueprint 配置到源码级渲染原理

发布时间:2026/9/17 3:07:14

资讯中心
01
ARTICLE

Rerun MapView 地图视图详解:从 Blueprint 配置到源码级渲染原理

Rerun MapView 地图视图详解:从 Blueprint 配置到源码级渲染原理
Rerun MapView 地图视图详解从 Blueprint 配置到源码级渲染原理【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerunMapView 是 Rerun 中用于展示地理空间数据GPS 轨迹、无人机航迹、机器人位姿等的 2D 地图视图。本文以 map_view.md 为骨架结合仓库内类型定义、渲染实现与官方示例完整讲解 MapView 的属性配置、GeoPoints/GeoLineStrings数据接入方式以及底层瓦片加载、缩放控制和 GPU 拾取的实现机制帮助你快速构建可运行的地理可视化方案。MapView 是什么MapView 是一个2D 地图视图View用于在平面地图底图上展示地理空间图元。它由 Rerun 的类型定义系统re_types_builder生成核心定义位于 map.def.rs/// A 2D map view to display geospatial primitives. #[rerun::rerun_type] #[rerun(view_identifier Map)] #[rerun(state unstable)] pub struct MapView { /// Configures the zoom level of the map view. pub zoom: rerun::blueprint::archetypes::MapZoom, /// Configuration for the background map of the map view. pub background: rerun::blueprint::archetypes::MapBackground, }⚠️稳定性提示MapView 当前标记为unstable不稳定。这意味着其数据格式可能在未来版本发生不向后兼容的重大变化用于长期存储的录屏数据需要留意这一点。该警告同时体现在官方文档与生成的各语言绑定中例如 Python 的 map_view.py 类 docstring。在 Rerun 视图体系中MapView 对应的视图类标识符ViewClassIdentifier为Map其生成结构体定义在 map_view.rs。凡是具备地理坐标组件LatLon的实体都可能被自动建议放进地图视图。属性详解zoom 与 backgroundMapView 只有两个蓝图Blueprint属性均在视图中通过属性Properties面板或 Blueprint API 进行配置。zoom缩放级别zoom属性对应MapZoomarchetype其类型定义见 map_zoom.def.rspub struct MapZoom { /// Zoom level for the map. #[rerun(optional)] pub zoom: rerun::blueprint::components::ZoomLevel, }缩放级别遵循OpenStreetMap 的缩放级别定义z0 最缩小、z22 最放大取值范围由 zoom_level.def.rs 明确给出0 为最低完全缩小22 为最高完全放大数据类型为 64 位浮点数。从渲染实现看缩放并不是简单地把相机拉近拉远而是直接驱动底图瓦片层级的选择。在 map_view.rs 中视图的缩放逻辑如下若蓝图中显式设置了ZoomLevel则优先使用该值否则根据当前所有地理对象的外包范围span自动计算一个能把所有对象放进屏幕的缩放级别span.zoom_for_screen_size(...)如果连对象范围也没有还没有数据则回退到默认值16.0计算出的缩放级别会交给walkers地图库的set_zoom应用若超出当前地图服务商支持的层级日志会以re_log::debug!级别记录一条zoom level rejected提示。另外用户手动缩放地图后新的缩放值会被写回蓝图map_zoom.save_blueprint_component(...)从而持久化到 Blueprint 中——这是你调整过一次缩放后再次打开仍能保留视图状态的原因。background背景地图background属性对应MapBackgroundarchetype其定义见 map_background.def.rspub struct MapBackground { /// Map provider and style to use. #[rerun(optional)] pub provider: rerun::blueprint::components::MapProvider, }provider是一个枚举组件MapProvider可选值定义于 map_provider.def.rs枚举值底层数值说明OpenStreetMap1默认地图源无需任何 API KeyMapboxStreets2Mapbox 极简风格街道图MapboxDark3Mapbox 深色主题地图MapboxSatellite4Mapbox 卫星影像使用高分辨率瓦片MapboxLight5Mapbox 浅色主题地图选择OpenStreetMap时开箱即用选择任意 Mapbox 系列源时必须在RERUN_MAPBOX_ACCESS_TOKEN环境变量中提供有效的 Mapbox API Key否则瓦片无法加载。Mapbox Token 的读取逻辑位于 app_options.rs优先返回 UI 设置里保存的 token为空时回退读取环境变量RERUN_MAPBOX_ACCESS_TOKEN。你还可以在 Viewer 的设置界面Settings中直接填写 token该输入框位于 settings_screen.rs 的map_view_section_ui函数中——注意它会在提示文案中说明token 将以明文形式保存在配置文件中。每种 provider 在代码中会实例化为不同的walkers瓦片源见 map_view.rs 的get_tile_managerOpenStreetMap 使用walkers::sources::OpenStreetMapMapbox 系列则按样式映射到walkers::sources::Mapbox其中Satellite源会开启high_resolution: true。当 provider 切换时已缓存的瓦片管理器会被重置state.tiles None强制重新按新源加载。快速上手用 Blueprint 创建一个地图视图官方示例 map.py 演示了最完整的用法先记录两个地理点再用 Blueprint 创建一个MapViewUse a blueprint to customize a map view. import rerun as rr import rerun.blueprint as rrb rr.init(rerun_example_map_view, spawnTrue) rr.log( points, rr.GeoPoints( lat_lon[[47.6344, 19.1397], [47.6334, 19.1399]], radiirr.Radius.ui_points(20.0), ), ) # Create a map view to display the chart. blueprint rrb.Blueprint( rrb.MapView( originpoints, nameMapView, zoom16.0, backgroundrrb.MapProvider.OpenStreetMap, ), collapse_panelsTrue, ) rr.send_blueprint(blueprint)Python 侧MapView构造参数来自生成的 map_view.pyorigin视图的原点 EntityPath其他实体都相对它展示默认/contents视图内容查询表达式默认$origin/**原点下所有子实体name/visible视图显示名与显隐控制defaults/overrides为视图内实体注入默认组件或强制指定 Visualizer 的映射表zoom接受MapZoomarchetype 或直接传一个浮点数示例中zoom16.0即被自动包装为MapZoombackground接受MapBackground或直接传MapProvider枚举示例中backgroundrrb.MapProvider.OpenStreetMap即被自动包装为MapBackground。zoom与background最终会分别写入 Blueprint 属性MapZoom与MapBackground与上文的类型定义一一对应。运行上述脚本后你会在 Viewer 中看到一张以这两个点为中心的 OSM 地图点以 20.0 UI 像素半径渲染。可在地图中展示的数据类型MapView 目前支持两类地理空间 archetype在 on_register 中注册了对应的两个 VisualizerGeoPointsVisualizer与GeoLineStringsVisualizer。GeoPoints地理点GeoPoints用于表示一组地理坐标点坐标采用EPSG:4326WGS84经纬度北/东为正方向、单位为度。字段结构见 geo_points.md必填positionsLatLon组件推荐radiiRadius半径、colorsColor颜色可选class_idsClassId用于配合 Annotation Context 做分类着色。其视觉器实现位于 geo_points.rs查询时以LatLon为必需组件VisualizerQueryInfo::single_required_component::LatLon(...)批处理结果GeoPointBatch中把LatLon转成walkers::Position再连同半径、颜色、拾取实例 ID 一起交给渲染器绘制。GeoLineStrings地理线串GeoLineStrings表示地理折线也称 line strips / polylines坐标同样使用 EPSG:4326 经纬度。字段结构见 geo_line_strings.md必填line_stringsGeoLineString组件每根线串的经纬度顶点序列推荐radii、colors线宽与颜色。两者都属于稳定程度较高的数据 archetype并且除了MapView外也都可以在DataframeView中查看原文档的Can be shown in部分。源码级原理地图是怎么画出来的瓦片底图与缓存底图由walkers库驱动。MapViewState持有一个OptionHttpTiles瓦片管理器与MapMemorymap_view.rs每次进入绘制时通过ensure_and_get_mut_refs惰性初始化瓦片管理器原生非 wasm平台上瓦片会缓存到磁盘子目录map_viewcache_subdirectory(map_view)walkers::HttpOptions的缓存目录配置见http_options函数状态中还估算瓦片缓存的内存占用walkers内部为容量 256 的 LRU 缓存见heap_size_bytes中的WALKERS_TILE_CACHE_CAPACITY。交互操作View 的交互帮助Help见 map_view.rs定义了三个基本操作平移Pan按住鼠标左键拖动缩放ZoomCmd/⌘ 滚轮macOS 为 Command其他平台见Modifiers::COMMAND的处理重置视图Reset view双击鼠标左键会恢复到跟随所有地理对象的自动缩放/居中状态map_memory.follow_my_position()并重新套用自动缩放级别。平移缩放状态由walkers的MapMemory维护初始无数据时视图中心被设置为 Rerun 总部坐标(59.319224, 18.075514)walkers::lat_lon(...)一旦有了地理对象中心即跟随对象经纬度范围的中点span.center()。绘制管线与 GPU 拾取地理对象不是画在 egui 画布上的简单图元而是通过re_renderer的 GPU 管线叠加绘制map_view.rs用正射投影Orthographic、TopLeftCornerAndExtendZ、far_plane_distance: 100.0构建ViewBuilder依次调用GeoLineStringsVisualizer与GeoPointsVisualizer的queue_draw_data通过walkers::Projector把经纬度投影到屏幕矩形渲染回调以BlendWithBackground::AlphaToCoverage混合方式叠加到地图底图上保证底图不被完全覆盖底图的版权归属声明tiles.attribution()如 OSM/Mapbox 版权文本会以覆盖层acknowledgement_overlay形式绘制在地图一角这是使用第三方地图源时的合规要求。鼠标悬停拾取采用 GPU 拾取picking_gpu读取渲染层的拾取回读结果在光标周围半径约 5 个 UI 点、换算后上下限 8–128 像素寻找最近的已拾取对象命中后展示实体路径与数据 tooltip由于 GPU 回读存在数帧延迟代码用last_gpu_picking_result缓存最近一次结果以消除闪烁。双击地图上的对象会将该实体设为选中状态。自动生成与导航spawn_heuristics决定什么情况下自动创建地图视图map_view.rs只要当前数据中存在任一个被GeoPointsVisualizer或GeoLineStringsVisualizer指示的实体就会在根层级自动生成一个地图视图ViewSpawnHeuristics::root()——这就是你直接rr.log地理数据不开 Blueprint也能看到地图的原因。地图视图本身支持可见时间范围supports_visible_time_range返回true可以配合时间轴回放。使用建议与注意事项没有 Mapbox Key 就用 OSMOpenStreetMap是默认且无需认证的地图源只有需要 Mapbox 的暗色、卫星或浅色样式时才配置RERUN_MAPBOX_ACCESS_TOKEN或 Viewer 设置界面填写。缩放级别的边界0–22 是通用范围实际可用的最大层级取决于所选地图服务商提供的瓦片代码中若传入超出范围的缩放walkers会拒绝并打印 debug 日志。自动缩放优先于手写 zoom未在 Blueprint 中指定zoom时视图会按数据外包范围自动缩放并居中单对象场景回退到 16.0。想要稳定的初始视野建议显式传入zoom。数据格式GeoPoints与GeoLineStrings的经纬度必须符合 EPSG:4326北/东为正、度为单位这是 MapView 内部投影与拾取正确性的前提。API 稳定性MapView 属于 unstable 类型官方警告其数据可能在未来发生不向后兼容的变化用于存档或跨版本共享的.rrd文件需谨慎评估。如需进一步探索可阅读视图注册与实现 map_view.rs、两个 Visualizer 的实现 geo_points.rs 与 geo_line_strings.rs以及本仓库中基于 Foxglove / ROS2 数据导入地理定位信息的透镜Lens实现例如 location_fix.rs 与 nav_sat_fix.rs它们展示了真实机器人定位数据如何被映射为 MapView 可渲染的组件。【免费下载链接】rerunVisualize, query, and stream to train on multimodal robotics data.项目地址: https://gitcode.com/GitHub_Trending/re/rerun创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
02
RELATED NEWS

相关资讯

更多网站建设与数字化升级内容

03
WHY YAOTU

想打造同款高转化官网?

懂行业、懂生意,从建站到增长一站式陪跑

场景化定制

不做模板站,围绕你的业务场景量身设计,小众不撞款。

营销型架构

以转化目标组织内容与路径,让官网真正带来询盘。

全周期服务

设计、开发、运营、运维一体,上线只是开始。

免费获取你的建站方案

留下需求,专属顾问 24 小时内为你输出方案建议。