====== Programming tips ====== プログラミングでちょっと役に立つヒント。備忘録として書いておく。 ===== OpenLayers ===== ==== spriteの使い方 ==== [[https://openlayers.org/en/latest/apidoc/module-ol_style_Icon-Icon.html|Icon Style]]を指定する際、 new Icon({ src: 'symbols.png', size: [icon.width, icon.height], offset: [icon.x, icon.y], のようにsrcでスプライト画像、size、offsetでスプライト画像中の矩形領域を指定する。これらのパラメータの設定は、Mapbox GL JSの[[https://docs.mapbox.com/mapbox-gl-js/style-spec/sprite/|sprite]]のJSONに合わせて、 { "Summit" : { "height" : 24, "width" : 24, "y" : 0, "x" : 624, "pixelRatio" : 1 }, : } のようなJSONファイルを読み込んで行うと、共通化の点で便利。 GeoJSONからアイコンの情報を読み込む際、[[https://github.com/gsi-cyberjapan/geojson-with-style-spec|スタイルつき GeoJSON 規約]]ではLeafletの仕様に合わせて _iconUrl というパラメータで画像URLを指定している。これは分かり易いが、スプライト画像が利用できないので良くない。_iconというパラメータで種別を指定するようにすべき。スプライト画像を使わない場合でも_iconから_iconUrlを得ることはLUTなどを用いて容易に実装でき、画像の置き場に関して自由度が増す。 ===== ルート地図(地理院Vector+Mapbox GL JS) ===== 地理院Vectorが全国整備されたので、サンプルを作ってみた。GeoJSONのレイヤを追加。追加レイヤに固有のスプライト画像を追加する方法が不明なので、取り敢えず使用するアイコン画像を個別にロードしている。高解像度モニタで見ると、やはりVectorの等高線は綺麗だ。
===== ルート地図(地理院Vector+OpenLayers) ===== こちらのサンプルはOpenLayers ver.6+ol-mapbox-styleによるもの。割とサクッと動いた。軌跡の表示はなし。地図のスクロールなどでPCの負荷が大きいのか、カクカクする。これは多分、適用するスタイルをfilterで線形に探索しているところに時間がかかっている。
===== 山名一覧と点名一覧(地理院Vector) ===== 地理院Vectorから山名と読み仮名の情報を抽出して、地形図に重ね合わせて表示した。縮尺によって表示される山名が増減する。一尺八寸山は難読山名No.1の山。
次は地理院ベクターの同様な応用で、三角点の点名を表示したもの。三角点の詳細な情報は[[https://sokuseikagis1.gsi.go.jp/top.html|基準点等成果閲覧サービス]]で調べられるが、点名が地図をスクロールするだけで一覧できる点が便利である。