一个校园地图。
注:本项目当时编辑了 OpenStreetMap,BIT101 基于这些数据开发了地图模块。
以下操作全部在VSC中。
准备工作(只有首次需要):
安装Live Preview插件。(Live Server等也行)
切换/签出(checkout)到dev_locate
分支。
如何切换:搜索命令(F1)“签出”,或者单击任何显示了分支名字的地方(左下角状态栏、“源代码管理-源代码管理存储库”)。
没有
dev_locate
或origin/dev_locate
:抓取(fetch)。(搜索命令(F1)或“源代码管理-源代码管理存储库-‘…’-‘拉取,推送’-抓取”)
测试:
打开/tools/photos_exif/index.html
或/map/index.html
。
/locate_test/index.html
是最开始用百度的做的,后来不再维护。
Live Preview: Show Preview(二选一):
我一般先用第一种方法,然后修改地址到http://127.0.0.1:3000/,再用[Microsoft Edge Tools](https://marketplace.visualstudio.com/items?itemName=ms-edgedevtools.vscode-edge-devtools)插件“Launch Instance”,然后手动访问http://127.0.0.1:3000/…。
另法:直接按F5。
这还需要Microsoft Edge Tools插件。
其它浏览器大概删除
launch.json
,再强行F5自动生成一个launch.json
,然后把configurations
里的url
改成"http://127.0.0.1:3000/map/"
之类的就行。
→Android 设备远程调试入门 - Microsoft Edge Development | Microsoft Docs。
百度地图 JavaScript API 3.0(不好用,版本混乱,文档不够人性化)
地图数据使用 Open Street Map,地图图片使用 Mapbox。
tools/photos_exif/index.html
),7月拍的那些照片还是用人工标注的吧。direct.yml
及glimpse.yml
规范这里朝向有两种标准:
Leaflet 和 EXIF 都采用 clock。
可使用utilities/basic_converter.js
的convert_direction()
转换。
direct.yml
可按以下方法获取文件名列表。
使用资源管理器打开
/data/photo/original/south
,在地址栏(Alt+D)输入cmd
,然后在控制台输入tree /f
。
direct-${文件夹名}.yml
,位置:原图片相应文件夹内。例:data/photo/original/south/direct-south.yml
。img
:文件名(含扩展名)。若文件名形如 IMG_2333.jpg,则可简写为照片编号,如 2333。location
:地点简单描述,会用作照片标题。有多个请用列表。direction
:朝向(polar)。comment
(可无):提示,例如某个门平常不开。会显示出来。note
(可无):备忘,记录遗留问题,例如方向不确定。不会对外显示。latitude
、longitude
(可无):经纬度。一般在照片里有,偏离太多时需要手动标注。glimpse.yml
direct.yml
生成。(→utilities/glimpse_yaml.js
)data/photo/glimpse-south.yml
。direct.yml
的所有信息。direction
:改为 clock。latitude
、longitude
:若direct.yml
中没有,则从照片的 EXIF 获取。names
:内容同location
,但保证为Array
(即使只有一个)。api_keys.jsonc
示例:
{
"baidu": {
"key": "Lorem Ipsum",
"description": "百度地图 JavaScript API",
"link": "https://lbsyun.baidu.com/apiconsole/key#/home"
},
"mapbox": {
"key": "The quick brown fox jumps over the lazy dog",
"description": "Default public access token",
"link": "https://account.mapbox.com/"
}
}
使用示例:
注意,在 JavaScript 模块最外层使用
await
可能在手机上不兼容,毕竟这是 2021 年才有的特性。(→Can I use?)
import {get_api_key} from '/utilities/api_keys.js'
let key = await get_api_key('mapbox');
若不是 module,暂时用下面这个。
let keys = await (await fetch("/utilities/api_keys.jsonc")).json();
let ak = keys.baidu.key;
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。