Skip to content

App data format

OHTSUKA Ko-hei edited this page Aug 20, 2018 · 8 revisions

Maplatのアプリケーションデータフォーマットについて記載します。

アプリケーションデータとは

複数の地図データなどを集めて、地図切り替え可能なアプリケーションとして定義するためのjsonファイルです。
アプリケーションデータはMaplatのルートフォルダ下に"apps"フォルダを作成し、その下に置かれます。
ファイル名は "アプリケーションID(一意なもの)".jsonです。
サンプル動作用html(release.htmldebug.html)では、クエリストリングにappid=[アプリケーションID]を指定することで呼び出すことができます。

データスキーマ

下記のデータスキーマは基本http://json-schema.org/draft-04/schema#に準じますが、特殊なデータタイプとして"locales"を含んでいます。
これでスキーマ定義されたデータは、{"ja": "日本語", "en": "English"}のような形で多言語化対応データ定義をすることができます。
多言語化データ定義は"ja", "en"だけでなく他言語にも対応していますが、ユーザインタフェースの方が"ja", "en"にしかまだ対応していないため、実質2言語のみの対応になります。

---
$schema: "http://json-schema.org/draft-04/schema#"
title: "Maplat Application"
type: "object"
required: # 必須のプロパティを定義
  - "app_name"
  - "home_position"
  - "default_zoom"
  - "sources"
properties:
  app_name: # アプリケーションタイトル。サンプル動作用htmlではhtml/head/titleに設定されます。
    oneOf:
      - type: "string" 
      - type: "locales"
  fake_gps:
    type: "boolean" # アプリ動作テスト用の、擬似GPS機能をオンにするかどうかを設定します。デフォルトはfalse。
  fake_center: # 擬似GPS機能動作時の中心箇所の名称を指定します。(中心箇所の経緯度自体はhome_positionで指定します)
    oneOf:
      - type: "string" 
      - type: "locales"
  fake_radius:
    type: "number" # 擬似GPS機能動作時のGPS誤差円の半径をmで指定します。
  home_position:
    type: "array" # 標準地図時のアプリケーションのホームポジション、擬似GPS機能動作時の乱数分布中心にもなります。
    items:
      type: "number" # 1つ目は経度、2つ目は緯度 
      minItems: 2
      maxItems: 2 
  default_zoom:
    type: "number" # 標準地図時のアプリケーションのデフォルトズームを設定します。
  sources:
    type: "array" # アプリケーションで利用する地図の一覧です。ベース地図(base)とオーバーレイ地図(overlay or maplat)を最低1つずつ設定する必要があります。
    items: 
      anyOf:
        - type: "string" # ベース地図のいくつかはショートカット文字列が定義されています。
          enum: 
            - "osm" # OpenStreetMap
            - "gsi" # 地理院地図
        - type: "object"
          required:
            - "mapID"
          properties:
            mapID:
              type: "string" # 地図IDを指定します。
            label: # 地図セレクタに表示する文字列を設定します。省略すると地図データ側のyear、title等が使われます。
              oneOf:
                - type: "string" 
                - type: "locales"
            maptype:
              type: "string" # 地図の種類を指定します。省略するとmaplatとして扱われます。
              enum:
                - "base"
                - "overlay" # TMSまたはWMTS仕様のオーバーレイ地図も扱えます。
                - "maplat"
            attr: # ビューア右下に表示される注記文字列、地図データ側での設定を上書きする他、地図データJSONの存在しないoverlay等に用います。
              oneOf:
                - type: "string" 
                - type: "locales" 
            url:
              type: "string" # 地図画像タイルのURLテンプレートを設定します。
  pois:
    type: "array" # POIピンの設定を行います。将来的には外部定義や地図側での定義なども行えるようにする予定です。
    items:
      type: "object"
      required:
        - "name"
        - "lat"
        - "lng"
        - "desc"
      properties:
        name: # POIの名称です。
          oneOf:
            - type: "string" 
            - type: "locales"  
        address: # POIの所在地住所、アクセス方法などです。
          oneOf:
            - type: "string" 
            - type: "locales" 
        lat: 
          type: "number" # POIの緯度です。
        lng: 
          type: "number" # POIの経度です。
        start:
          type: "number" # POIの作られた年など、時代による表示のON/OFF用として想定された値ですが現状実装的には未使用です。
        desc: # POIの説明文です。
          oneOf:
            - type: "string" 
            - type: "locales"
        image:
          type: "string" # 写真、説明図等、POIを代表する画像へのリンクURLを指定します。

データサンプル

将来の拡張予定

  • mapIDにURL等を指定し、同一サーバ上にない地図定義なども読み込めるようにする予定があります。(Issue 115)
  • POIの指定を外部ファイルで行えるようにしたりする予定があります。(Issue 117)