たまにはマッシュアップなるものを

以前、いくつかの図書館の検索結果をJSON/JSONPで返すcgiを作ったが*1、ついでにGoogle Mapsマッシュアップしてみる実験*2

  • とりあえず、ISBNを入力→ECS4.0で書名を取得→各図書館を検索→蔵書の有無で色分けされたマーカを表示するところまでをザックリ作成
    カブって見づらいが県立図書館は蔵書ありなので青、福島市立は蔵書なしなので赤のマーカ

  • 一応の目標として
    • マーカをクリックで拡大、本館、分館毎に蔵書の有無を表示
    • ↑自前のapiを拡張し、館毎の蔵書の有無や、貸し出し中や予約可等の情報を持たせる
    • もう少し対象の図書館を増やす(会津若松市立図書館位?)
  • ハマったところ
    • Google Maps APIv2活用リファレンスのp33のサンプルのプログラムを良く理解せずに、そのまま記述、GPointとGLatLngでは緯度、経度の指定の仕方が逆なのに気づかずマーカが出ない
      →全てGPoint(緯度,経度)に統一した。(GoogleMapsのリンクからそのままペーストできるし)
    • 自前のマーカが表示されない
      →ローカルでテストしていたが、サーバ上にしかイメージが無かった
  • 左側が開いているのは下図の部分も組み込みたいから(Livedoor天気)
    だって借りに行くときの天気って気になるでしょ

  • ラジオボタンで、浜通り中通り会津の天気予報を切り替え、下方に詳細地域の天気予報ページへのリンクを表示、例によってgreyboxでサブウインドウで見せるのだが
    • 動的にリンクを差し込んでもgreyboxの効果が有効にならない
      →load時に指定したリンクにのみイベントを追加しているので、リンクの更新時(ラジオボタン押下時)にイベントの追加の関数を呼び出す 例)decoGreyboxLinks();
    • greyboxで詳細地域の天気予報ページを表示する際に、同一地方をグループ化(rel="gb_pageset[グループ名]")してPrev、Nextボタンで前後のページを表示するようにしたが、ラジオボタンで切り替えるたびに全体のページが増えていく(下図の何/何のところ)
      切り替えるたびにremoveChildはしているがgreyboxの配列(gb_scripts.js)がクリアされていないから
      →クリアする 例)GB_SETS={};

    • まじめにinnerHTMLを使わずにinsertRowしてinsertCellしてappendChild(イメージやテキスト)してsetAttributeでalignをしても、Firefoxでは表示位置が変わるが、IEで表示位置の指定が有効にならない
      →ググったら、IEでは.align = "left"という指定だそうで、Firefoxでも有効なのでとりあえずこのまま.alignで指定する

分館毎の蔵書情報ってどのように表現したらよいものやら?館名とか日本語で持たないほうが良いだろうし、また、本毎に貸し出し中/貸し出し可だし

あと、明日は山形県向けのISBN-13対応予定です。

*1:コールバック名が指定でき、無指定だとJSONになるよう改良しました

*2:もしかすると車輪の再発明かも