/home/yuhangch/blog

OL Search - 一个 Openlayers API 快速访问拓展

为什么

openlayers的API文档内容是极好的,然而使用起来却一言难尽。

一般的查api的方式有以下两种:

OL Search 1

OL Search是一款浏览器拓展(目前只上架了Edge add-ons2),可以通过浏览器地址栏快捷搜索openlayers api,步骤如下:

  1. control+L 或者 cmd+L 进入搜索栏。
  2. 输入ol关键字,tab 或者 space 进入 OL Search。
  3. 输入目标api (方法、成员变量、触发器等)的关键字,选择指定链接直达。

实现

主要分三步:

解析api文档

https://openlayers.org/en/latest/apidoc/navigation.tmpl.html

文档的导航栏部分镶嵌了一个HTML,来自上面的地址。 这里本来有两个思路。 一是通过修改openlayers自己的 api build的脚本生成一组与上述HTML内容一致的JSON格式的api文档信息。 但考虑到两点:

模糊搜索

最开始的时候采用硬搜索,自己使用起来都不满意,因为打字偶尔的typo不可避免,因此模糊搜索应该是刚需。 这里参考了mdn-search 的做法,引入了fuse.js 。也做了一些多关键字的增强。 比如在搜索readFeatures这个方法的时候,各种格式例如EsriJSONKMLWKT等都有readFeatures方法,而默认搜索结果WKT在后面,假如我想找WKTreadFeatures的话就会影响体验。 通过fuse.jssearch.$or,实现了多关键字的复合搜索。 这样只需要输入readFeatures wkt 就可以将包含WKT的结果提到第一个候选。

干掉默认推荐

在监听地址栏omnibox内容变化事件的回调函数中,浏览器默认会在你给的推荐结果前面默认加一条默认推荐,其内容是你键入的内容,指向的地址是你拓展的地址加上该内容。默认行为即File not found。 这部分思路来自rust-search-extension ,首先根据用户的键入内容结合搜索结果,将默认推荐设置为原本的第二条结果(真正搜索结果的第一顺位),之后在用户回车后判断该选项是否是默认建议,如果是,则指向真正搜索结果的第一顺位的地址。

最后

希望该工具给重度使用openlayers api doc的各位同仁带来帮助。

#openlayers #spatial