在地图上展示照片

目录

    • 一、运行简单,不折腾
    • 二、支持多人使用
    • 三、照片存到腾讯云,不占本地空间
    • 四、把照片放到地图上
    • 五、分组和分享

平时喜欢拍照,也喜欢到处走走。时间一长,手机和电脑里存了几百张照片,大部分相册软件是按时间排列的,看久了容易忘记当时是在哪儿拍的。虽然 IOS 和安卓自带的相册应用提供有一个查看照片位置的功能,但无法分享给其他人。于是我想,能不能做个东西,把每张照片都放到它实际拍摄的那个地点上去?就像在地图上钉一个钉子,在互联网上公开分享,点开就能看到那会拍的照片。

基于这个想法,用 Go 和 Vue 写了一个小应用,功能很简单,但用着很顺手。大约两年前就编写好这个应用的初版,但是一直没完善所以没将代码公开出来。假期无事,整理了一下代码及编译产物,上传到托管平台。

具体效果可查看这个 https://wsh233.cn/webapp/maphoto/

img

首页

查看照片

查看照片

一、运行简单,不折腾

得益于GO语言在编译时可以将静态文件打包进最终产物的特性,整个应用只有一个单文件,无任何依赖,不管是在 MacOS,Windows 还是 Linux 上,都可以直接运行,不需要装数据库,也不用配什么运行环境。这对不懂技术的人来说很友好——下载下来,打开运行,就能用了。如果是放在自己的小服务器上,也是把文件传上去,在终端里敲一下命令就行。没有复杂的安装步骤,也没有一堆依赖要解决。

image-20260406173730829

后台首页

二、支持多人使用

虽然一开始只是自己做着用,但后来家人和朋友也想用。所以加上了多用户功能。每个人注册自己的账号,上传的照片互相看不见,很干净。这样一个小应用可以服务一家人,或者一个兴趣小团体,比如几个喜欢骑行的朋友,各自上传自己的路线照片。

三、照片存到腾讯云,不占本地空间

照片如果直接存在服务器上,硬盘很快就会被占满。所以我把存储接入了腾讯云的对象存储(COS)。用户上传照片时,文件直接传到云端,我的应用只保存一个地址和相关信息。这样一来,服务器本身几乎不占存储空间,而且下载和访问的速度也快。既省钱,又省心。

照片存储(这里使用腾讯云)

四、把照片放到地图上

这是核心功能。上传照片的时候,应用会读取照片里的 GPS 信息(只要拍照时开了位置记录),然后把照片显示在地图上。同样地点拍的照片会自动聚合在一起,点击那个聚合点,就能看到这个位置下的所有照片。比如在故宫拍了好几张,地图上就只显示一个点,点开之后可以翻看所有故宫的照片。这样地图不会密密麻麻全是标记,看起来清爽很多。

如果照片没有记录 GPS 信息,也可以手动在地图上选一个点来绑定位置。

添加地点

五、分组和分享

照片多了之后,光靠地点来整理还不够。比如和朋友去了一次旅行,拍了上百张照片,散布在不同地方,这时候就可以创建分组,把这次旅行的照片都放在一个组里。

每个分组可以生成一个分享链接,把链接发给朋友,对方不需要登录就能查看这个分组里的所有照片。对于临时分享来说非常方便。比如刚办完一场活动,把摄影志愿者拍的几百张照片整理成一个分组,发到群里,大家都能看到。

地点列表

整个项目代码不多,功能也很克制,但它解决了我自己实实在在的需求。如果你也有类似的困扰——照片太多、经常找不到在哪拍的、想和家人朋友分享某个地点的照片——或许这个小工具也适合你。

全部代码托管在这里,编译好的二进制文件从这里下载,具体如何使用查看这里


2026-04-07 #工具#