Cover image
Image by pluspng.com

青蛙最近整理照片和blog的时候,一直想想在blog post里添加一个地图。 但是pelican似乎没有靠谱的google map plugin。 虽然有一个 google_embed ,但是似乎现在不能用了,按照它的README写好map之后,post里面完全不会转义。

于是青蛙一怒之下自己照猫画虎写了个liquid_tag版本的google map,竟然也能用了。

目前这个plugin支持map和direction模式,青蛙还在考虑要不要添加街景模式。

添加map的方法:

    {% gmap "location" mode [maptype] [align] [width] [height] %}

location:必选项,指定地点,必须包含双引号,支持中文。

mode:必选项,地图模式,有placesearch选项, 指定地图显示单个地点或者搜索location中的关键字

maptype:地图的显示模式,包含roadmapsatellitehybridterrain

align:地图在页面中的对齐方式,leftcenter或者right

width:地图宽度

height:地图高度

例如: { % gmap "东方明珠,上海" place roadmap left 600 480 % } 显示如下地图:

添加direction(导航)的方法:

    {% gdirection "origin" "destination" ["waypoints"] mode [maptype] [align] [width] [height] %}

origin:必选项,指定出发点,必须包含双引号,支持中文。

destination:必选项,指定目的地,必须包含双引号,支持中文。

waypoints:指定途经点,必须包含双引号,支持中文。

mode:必选项,导航模式,有drivingwalkingbicyclingtransitflying选项。

maptype:地图的显示模式,包含roadmapsatellitehybridterrain

align:地图在页面中的对齐方式,leftcenter或者right

width:地图宽度。

height:地图高度。

例如: { % gdirection "东方明珠,上海" "人民广场,上海" driving roadmap left 600 480 % } 显示如下地图:

如果你也想在pelican里面使用这个插件,可以在 Google cloud plateform console 申请一个MAP API key,然后在pelicanconfig.py文件里加入API key配置:

GMAPS_API_KEY = "YOUR_API_KEY_HERE"

然后给liquid_tag打个补丁:

接着把这个文件放进liquid_tags目录里面,然后就可以在post里添加地图了。

Enjoy posting!

Update: 2019-07-13

青蛙翻了几天google map API文档,给这个plugin山寨了一个同时显示多个地点的参数。

不过并没有最终完成,所以先不放出完整代码了。大概效果是这个样子:

参考文档:

[1] Google Embed

[2] google_embed

[3] Liquid-style Tags

[4] Geocoding Service | Maps JavaScript API | Google Developers


Comments

comments powered by Disqus