产品更新。
Immich 和 Mapsake 的最大旅行护照更新
现在可以直接连接到自托管的 Immich 库,可以创建和维护地图,而重新设计的护照将相同的历史记录转换为卡片、数据地图、过滤器和旋转地球仪。
Mapsake 迄今为止的最大更新。
Mapsake 最初是一个相当简单的承诺:标记您访问过的、居住过的以及想要参观的地方,然后将这些记录保持私密和可移植。地图仍然是该应用程序的核心,但此版本更改了将实际旅行历史记录添加到地图的速度以及您可以在地图上执行的操作。
两部分最大的内容是更深层次的内容。 Immich 支持以及重新构建的旅行护照。一个将您的自托管照片库转换为有用的旅行证据;另一个将该历史记录转换为值得探索和分享的东西。
这是 Mapsake 迄今为止的最大更新,不是因为它添加了最长的设置列表,而是因为它完成了从私有源数据到完整个人地图的闭环。
Immich 现在是一个一流的照片来源
很多人关心自己的照片库,他们会使用 Immich。它是一个自托管的照片和视频系统,这使其非常适合 Mapsake 的本地优先方法。棘手的部分是如何在不将 Mapsake 变成另一个照片上传器或要求中间服务器处理某人的旅行历史记录的情况下,支持它。
连接是直接的。在“记录”中,输入 Immich 服务器的 URL 以及从...创建的 API 密钥。 Immich 的用户设置. Mapsake 将密钥存储在 Apple Keychain 中,并从设备与该服务器进行通信。没有需要创建的 Mapsake 帐户,也没有 Mapsake 服务接收该库。
Mapsake 读取页面中的定位资产,包括其坐标、拍摄日期和可用相机型号。它保存构建地图所需的小量元数据,然后使用 Apple Photos 使用的相同位置管道解析这些点。 Immich 缩略图可以出现在位置故事中,而更大的预览仅在打开时从用户的服务器中获取。
细节很重要。该应用程序不需要复制 Immich 库,才能使其有用。它保留每个源资产的引用、一个紧凑的本地旅行索引和一个可重生成的缩略图缓存。原始文件仍然保留在所有者放置的位置。
第一个 Immich 导入器很有用,但不完整
第一次实现使用 Immich 的地图标记端点。 这是一个有吸引力的起点:一个请求返回所有位于坐标和已由 Immich 解决的位置名称的资产。 无需限制 Apple 的网络地理编码器,并且没有对库大小的任意限制。
那个版本可以快速绘制国家,但它还不是真正的照片来源。仅仅是一个标记不足以让 Mapsake 拥有足够的持久身份来再次显示该图像,保留其拍摄日期,应用与 Apple Photos 相同的相机滤镜,或从地图上删除一张图像而不删除整个位置。
因此,导入器迁移到 Immich 的分页元数据搜索。现在,每个资产都有一个稳定的源标识符、日期、坐标以及可用的 EXIF 相机型号。Mapsake 在将其放置在共享照片元数据存储之前,会使用 Immich 前缀命名标识符,以防止其与包含相同文本的 Apple Photos 标识符发生冲突。
此迁移还修复了一个微妙的产品不一致性。在此之前,从 Immich 派生的位置可能会报告照片数量,但会打开一个空的照片网格。地图知道图像存在,而位置故事不知道如何检索它们。将 Immich 视为与 Photos 相同的类型的索引源,使计数、过滤器、缩略图、排除、热图和故事保持一致。
一个导入器,多个来源
Immich 也促成了一次有用的重构。原始的照片导入功能将数据源访问、位置解析、合并、进度和呈现集中在一个模型中。这对于 Apple Photos 来说是可行的,但对于每个新的服务都需要一个单独的分支。
Mapsake 现在将这些职责分开。一个模块生成规范化的位置记录。无头导入引擎将这些记录进行聚类或解析,应用相同的层次结构规则,并将结果合并到地图中。前端界面提供进度和审查功能;后台同步可以使用相同的引擎,而无需构建界面。
收益不仅仅局限于 Immich。文件导入器、Nomads 以及未来的集成可以保留其特定于源的解析规则,同时共享决定城市是否意味着区域和国家、如何处理重复项以及应更新哪个现有标记而不是重新创建的规则。
这比一张新的卡片更不起眼,但它是使功能丰富的应用程序易于理解的内部机制。 新的导入器应该主要回答“如何读取此源?”的问题,而不是重复回答“什么是地点?”的问题。
不断跟踪的后台同步。
首次导入后,可以启用 Immich 作为可选的后台数据源。 当系统为 Mapsake 提供后台时间时,该应用程序会再次检查服务器、更新其本地资源快照并将新发现的位置合并到地图中。 新位置的通知仍然是可选的。
这不是连续的 GPS 跟踪。 Mapsake 从 Immich 中存储的照片日期和位置信息中重建记录。 它还保留了在元数据不完善时有用的审查和编辑工具:设备过滤器、最小照片阈值、地点检查以及在不从原始来源删除图像的情况下,从地图上排除单个图像的功能。
Immich 不会公开 Apple Photos 可以提供的所有字段。特别是,高度和速度无法通过此路径获取,因此基于这些字段的过滤器不会影响 Immich 的资源。我宁愿明确说明这一点,也不要假装所有来源都相同。
同步必须安全失败。
后台工作在 Apple 平台上是机会性的。应用程序可以请求位置信息,但它不能保证 iOS 会在确切的分钟数内唤醒它。自托管的服务器也可能离线,只能通过家庭网络访问,或者在 API 密钥更改后暂时返回授权错误。
Mapsake 仅在成功获取后才将源快照视为权威。即使请求失败,也不会删除上次有效的地图。该应用程序会记录源状态、重新安排任务并计算连续失败次数。在网络源重复失败后,它会禁用该自动化,并告知用户,而不是永远静默重试。
相同的服务在应用程序返回前台时执行轻量级检查,这为同步提供了一种实际的途径,即使后台调度非常保守。手动同步选项仍然可用,因为用户意图始终应优先于调度启发式方法。
API 密钥绝不会出现在日志、导出或 Passport 共享中。日志会显示数据源,并报告计数或状态码,这足以诊断大多数故障,而不会将调试跟踪变成凭证泄露。
Atlas 已经成为真正的第二个家。
原始的 Passport 是一个紧凑的统计屏幕。它会计算国家和大陆,并生成一个可共享的卡片。这很有用,但远小于它背后的地图。
新的 Passport 是一个可滑动故事的集合,这些故事是基于相同的旅行记录构建的:
- 世界地图和百分比卡,用于显示“已访问”、“已居住”、“计划前往”或组合视图。
- 国家旗帜、大陆进度、地区、城市、机场、照片数量和停留天数。
- 使用区域和年份过滤器,可以将一生旅行地图划分为一个大陆或一个章节。
- 按照片数量、最近性或停留时间着色的数据地图。
- 各种颜色的卡片和每张卡片的颜色控制。
- 一段在设备上渲染的旋转地球视频,可用于社交媒体。
每个卡片都使用相同的 Passport 数据模型。这确保了当某人更改滤镜、区域或年份时,总数始终一致,并且主 Passport、朋友 Passport、共享卡片、小部件和 Apple TV 可以使用相同的计算,而不是创建真理的单独版本。
第一个替代卡原型揭示了为什么共享模型很重要。 很容易创建一个漂亮的洲地图,一种方式是计算国家数量,另一种方式是计算地图卡上的领土数量。 两者在隔离状态下都可能看起来合理。 但并排放置时,矛盾就很明显。
护照数据是在选择任何特定卡片之前计算的。它包含所选的旅行镜头、时间和区域范围、计数、标志、照片总数、日期范围、覆盖范围、裁剪边界和地图颜色。卡片决定如何表达这些值;它不会再次决定。
这种划分使得水平卡片样式成为可能。滑动不会加载新的数据集或重新运行导入。它只是改变了视觉呈现方式:以地图为中心、以数字为中心、以旗帜为中心,或以排名列表为中心。共享按钮接收可见的样式,因此导出的图像是用户实际选择的卡片,而不是其系列中的第一个卡片。
护照应该感觉个性化,但不能牺牲可读性。
鲜艳的卡片系统最初是尝试超越通用白色统计面板的尝试。镜头颜色现在会生成渐变和高光,大陆可以使用自己的调色板,而地图卡片可以在不更改底层事实的情况下添加飞行路径或发光的地球。
自定义功能引入了另一个限制。文本、强调和背景颜色可以针对每个卡片进行编辑,但渲染器仍然需要在浅色和深色外观以及社交导出分辨率下保持对比度。默认设置完成了大部分工作;编辑功能适用于希望使自己的护照与自己的地图或特定旅行相匹配的用户。
区域过滤功能不仅仅是一个下拉列表。 选择一个大陆会更改地图的显示范围,并将全球覆盖转换为对东南亚、巴尔干半岛、北欧国家或北美州和省份的有用显示。 年份过滤也采用相同的理念。 护照可以描述一生的全部,也可以只描述到 2016 时的状态。
数据地图卡是另一个统一点。 照片、时效性和花费的时间是 Atlas 模式的早期阶段。 将这些共享指标和颜色逻辑移动到两个界面下方,使 Passport 能够导出 Atlas 显示的热图,包括离散的图例。
规则相同。 它不是应用程序界面的录制。 Mapsake 渲染地球仪、突出显示的国家/地区、统计数据和品牌叠加层,生成适当的视频,然后将完成的文件传递给正常的共享表。 任何内容都不会自动发布。
为什么应该制作一个短视频而不是录制屏幕?
屏幕录像会捕获导航栏、触摸指示器、设备尺寸以及实时界面的帧速率。它还会使导出的结果取决于用户每次执行相同的操作。
渲染器使用专用的 SceneKit 地球仪和透明的统计叠加层。 帧写入到 H.264 视频中,具有已知的垂直尺寸、受控的旋转持续时间,并且没有界面元素。 实时 Passport 卡使用相同的地球仪速度,因此点击“共享”感觉就像导出屏幕上已经显示的内容,而不是切换到不同的动画。
此离线渲染器与日常探索中使用的 Apple Maps 地球仪是故意分开的。 MapKit 非常适合流式交互式地图,但它不是确定性的视频渲染器。 对于卡片、短视频、小部件和 Apple TV,保留旧的几何体和 SceneKit 路径是一种有目的的重复:这些表面需要无需实时地图服务即可实现可重复的像素。
视频生成在本地进行,并显示进度,因为几秒的高分辨率帧需要大量的处理。 完成后,用户可以将其保存到“照片”中、通过“信息”发送或打开系统共享面板。 Mapsake 不需要社交帐户或上传端点来创建适合社交媒体的结果。
一个真理来源,有多种访问方式
Immich 和 Passport 看起来可能是不相关的功能,但它们解决了相同问题的相邻部分。导入使地图集足够完整,可以信任。护照功能使完整的记录易于回顾。
一个已定位的照片可以成为一个城市、地区和国家;为照片和时间热图做出贡献;为一次旅行添加时间;填充护照卡;并丰富一个地方的故事。 仅需一次更正底层标记,所有表面都应保持一致。
这是 Mapsake 的架构方向:一个持久的旅行历史记录,具有多个视图,而不是多个数据库。
仍然存在一些限制。 Imich 必须能够从设备访问才能获取缩略图和新的同步。 iOS 最终决定何时运行后台任务。 照片元数据可以证明相机位于某个位置,但不能说明旅行者为什么在那里。
这些限制是每个图层都保持可编辑状态的原因。自动化应该帮助用户快速创建一个可靠的地图;它永远不应该让记录感觉无法更正。
如何尝试
- 打开。 记录, 选择。 从 Immich 服务器媒体添加位置, 使用,并连接您的服务器 URL 和 API 密钥。
- 测试连接,运行导入,并在保存之前查看位置。
- 如果您希望地图保持最新状态,可以选择在后台同步中启用 Immich。
- 打开。 护照, 使用 切换镜头,然后尝试区域和年份过滤器。
- 左右滑动卡片以查看不同的布局,更改颜色,或创建旋转地球仪视频。
Mapsake 仍然是免费的,没有广告、订阅或强制性帐户。大型更新的目的不是为了创造更多可以销售的东西,而是为了使地图更易于使用。