圣地巡礼地图

挖一个坑, 之前去日本的时候想去圣地巡礼, 又不知道如何规划路线和时间. 可以做个网页辅助一下. 初步打算:

  1. 用Scrapy爬舞台探訪アーカイブとは的数据
  2. get一下Google Map的API, 把地名转化成地理坐标
  3. Plot到地图上做成静态网页即可食用

下半年去日本时就可以有计划地摸鱼, 调查风土人情, 出片.

仓库链接: https://github.com/9r0x/Seichi


2019.03.17 更新

功能

  1. 完成了spider的基础功能, 可以抓取主网页上每一部作品的链接并分析各页面下的内容
  2. 正则匹配获取由强调的地名组
  3. 每一个地名组由1+地名构成, 由全角逗号隔开, split之后flatten成一个地名表
  4. 依次get Google Place API. 没想到这玩意第一天显示无限量使用, 我请求了2400次. 第二天就给我上限2400次了
  5. 完成了React.js为架构, Ant Design为UI风格的前端
  6. 完成了包含简单信息的可扩展的pop-ups

技术难点

  1. 计划和修改了好几次Spider的输出数据结构
    • Json vs. Json Line 采取了Json 因为js对json带有支持, 与此同时以后也许得解决大文件导入的问题.
    • 以作品划分 vs. 以地点划分 最后选用了以地点划分, 考虑到这个app的purpose是陈列不同的地点, 作品名可以用filter选择
  2. Google-map-react这个项目虽然开箱即用, 却不支持element, 正确地写成Component之后一大堆warning就消失了.
  3. 抽象设计原则, 每次把整个object传入component才是正解. 在满足开闭原则的同时方便了扩展. 顺便因为ECMA6正式支持的Spreading, 传入一整个object就像python里的**kwargs一样好用.

TODOs

  1. 地点产生的混淆, 因为对Google Place API无条件地信任, 有些定位看上去不可思议但却是准确的(比如Knole House就是在英国的), 而看上去没问题的却不ok(比如三田被定位在台湾, 但其实是东京的一所学校)
  2. 支持Filter
  3. 支持动态更新数据, 每次扒1700+部作品这谁顶得住啊
  4. 支持路线规划
  5. 记住用户的上次画面的中心(localstorage)
  6. 支持当前位置
  7. 减少API请求次数
  8. 支持[]『』强调的地名
  9. 模糊地名会定位到JR站(对游客来说还算friendly)