OpenLayers | No pain,No gain. https://ufirst.jp/memo Fri, 10 Feb 2023 13:37:37 +0000 ja hourly 1 https://wordpress.org/?v=6.9.4 https://i0.wp.com/ufirst.jp/memo/wp-content/uploads/2022/08/apple-touch-icon-76x76-precomposed.png?fit=32%2C32&ssl=1 OpenLayers | No pain,No gain. https://ufirst.jp/memo 32 32 126496119 OpenLayersでベクトルタイルのタイルの境界でポイントが欠けてしまう問題 https://ufirst.jp/memo/2023/02/openlayers%e3%81%a7%e3%83%99%e3%82%af%e3%83%88%e3%83%ab%e3%82%bf%e3%82%a4%e3%83%ab%e3%81%ae%e3%82%bf%e3%82%a4%e3%83%ab%e3%81%ae%e5%a2%83%e7%95%8c%e3%81%a7%e3%83%9d%e3%82%a4%e3%83%b3%e3%83%88%e3%81%8c/ https://ufirst.jp/memo/2023/02/openlayers%e3%81%a7%e3%83%99%e3%82%af%e3%83%88%e3%83%ab%e3%82%bf%e3%82%a4%e3%83%ab%e3%81%ae%e3%82%bf%e3%82%a4%e3%83%ab%e3%81%ae%e5%a2%83%e7%95%8c%e3%81%a7%e3%83%9d%e3%82%a4%e3%83%b3%e3%83%88%e3%81%8c/#respond Fri, 10 Feb 2023 13:37:35 +0000 https://ufirst.jp/memo/?p=3772 OpenLayersでベクトルタイルを表示させポイントを使う場合、そのままだと以下のようにタイルの境界でポイントが欠けてしまう。

その場合は「declutter:true」にすることで解消される。

import VectorTileLayer from 'ol/layer/VectorTile';
 :
 :
new VectorTileLayer({
    declutter: true,
    style: new Style({
            image: new Icon({
                color: '#8959A8',
                 :
                 :
            })
    }),

ポイントの重なり回避が有効になり実際の位置とは異なってしまうので利用には考慮が必要

また、「forEachFeatureAtPixel」でfeatureを取得しようとした場合featureが重なっていても一つしか取得出来ないのでこれも注意。

]]>
https://ufirst.jp/memo/2023/02/openlayers%e3%81%a7%e3%83%99%e3%82%af%e3%83%88%e3%83%ab%e3%82%bf%e3%82%a4%e3%83%ab%e3%81%ae%e3%82%bf%e3%82%a4%e3%83%ab%e3%81%ae%e5%a2%83%e7%95%8c%e3%81%a7%e3%83%9d%e3%82%a4%e3%83%b3%e3%83%88%e3%81%8c/feed/ 0 3772
Mapbox GLからforkされたMapLibre https://ufirst.jp/memo/2021/01/post-0-51/ https://ufirst.jp/memo/2021/01/post-0-51/#respond Mon, 11 Jan 2021 17:06:00 +0000 https://ufirst.jp/memo/2021/01/12/post-0/ Mapbox glのライセンスが変更されたことでオープンソースにforkするプロジェクトが、多く生まれている

これもまたそのうちの一つ

MapLibre: Mapbox GL open-source fork
After Mapbox announced the closure of Mapbox GL JS, the community made a collective decision to maintain and further develop the last open-source version and bu...

]]>
https://ufirst.jp/memo/2021/01/post-0-51/feed/ 0 2794
地震観測施設一覧 https://ufirst.jp/memo/2020/07/post-0-29/ https://ufirst.jp/memo/2020/07/post-0-29/#respond Wed, 01 Jul 2020 09:00:04 +0000 https://ufirst.jp/memo/2020/07/01/post-0/
地震観測施設一覧(2024年4月1日現在) | 地震本部

日本全国の地震に関する施設データが公開されている。位置座標まである。

]]>
https://ufirst.jp/memo/2020/07/post-0-29/feed/ 0 2622
iPadでスワイプされた時に画面スクロールを抑止する方法 https://ufirst.jp/memo/2020/03/post-2440/ https://ufirst.jp/memo/2020/03/post-2440/#respond Sun, 08 Mar 2020 06:46:19 +0000 https://ufirst.jp/memo/?p=2440
癖の強いiOS

iPadのマップアプリを開発している。タッチ操作によるマップアプリの開発は実に難しい。地図をスワイプしたら地図をスクロールさせ、タップしたらアクション、長押しでまた異なるアクションなど細やかなインタラクションの実装が要求される。

OSSのJSライブラリであるOpenLayersではそれらの制御を実にうまくやってくれるが、今回iPadで問題が発生したので備考録として書いておく。

OpenLayersには標準でズームボタンが実装されているが、iPadの場合ズームボタンをスワイプすると画面全体がスクロールされてしまった。
これは回避不能かと思って諦めていたが地理院地図を見たところ同じ事象は確認されなかったので回避方法を探ってみた(地理院地図はLeafletが使われている)

結論から言うと、スクロールを抑止したいelementに対し、以下のCSSを定義してやればよい

touch-action: none;

これでスクロールやピンチイン・アウトによるズームが防げる。
※iPadと同じiOSであるiPhoneでは完全に抑止は出来なかった。

]]>
https://ufirst.jp/memo/2020/03/post-2440/feed/ 0 2440
MapTiler.jp https://ufirst.jp/memo/2020/01/maptiler-jp/ https://ufirst.jp/memo/2020/01/maptiler-jp/#respond Mon, 27 Jan 2020 14:14:52 +0000 https://ufirst.jp/memo/?p=2375 技術力が非常に高い地理空間技術の企業であるMIERUNEが「MapTiler.jp」なる新サービスを国内ローンチした。

オープンデータを活用したデジタル地図サービスをリリース - MIERUNEとMapTilerが提携、日本のロケーションサービス市場を拡大 -
株式会社MIERUNEのプレスリリース(2020年1月27日 16時)。地理空間技術のスタートアップ企業であるMIERUNE(TM)(本社:北海道札幌市)は、デジタル地図プラットフォームであるMapTiler(TM)(本社:スイス)と新しいパートナーシップを締結し、日本市場に最適化されたデジタル地図サービス「MIERU...

これはWEBからスマホネイティブまでを網羅的にサポートする地図プラットフォームのようだ。

ベース技術はFOSS4Gなどオープンなプラットフォームを採用しているため、非常に扱い安い(これは大事なこと)

今後の発展が非常に楽しみなところ。

MapBoxではZENRIN社の地図を取扱いYahooJapanなどで採用されているが、こちらはOpenStreetMapだけでなくMapBoxと同じようにどこかの地図会社と提携するのだろうか。。。ZENRINを除くと残る地図情報提供企業は実質2社くらいしか無いのだが。。。

]]>
https://ufirst.jp/memo/2020/01/maptiler-jp/feed/ 0 2375
OpenLayers6でレイヤー一覧を取得する https://ufirst.jp/memo/2019/11/post-2309/ https://ufirst.jp/memo/2019/11/post-2309/#respond Mon, 04 Nov 2019 14:56:46 +0000 https://ufirst.jp/memo/?p=2309

OpenLayersというのは2005年に誕生した地図表示JSライブラリの代表格である。バージョン3からは劇的進化を遂げ、WEB上でヌルサクの使い勝手を提供している素晴らしいプロジェクトである。
最近は利用しやすいLeaflet/MapBox勢力がシェアを高めているように思うが細かい所まで手が届く機能面と安定性から私は現在もOpenLayersを利用している。

さて、OpenLayersではol.mapにはgetLayersメソッドでレイヤー一覧を取得出来るが、ここで取得出来るのはol.layer.Layerとol.layer.LayerGroupである。
getLayersで取得したol.CollectionをforEachメソッドで回すわけだがそのさいに、ol.layer.LayerGroupの場合は更にgetLayersメソッドで入れ子構成を取得したいわけだがol.Collectionでol.layer.Layerとol.layer.LayerGroupの判断方法に悩んだのでメモしておく

なんてことはない getLayersを typeof で型判定し再帰処理すればすべてのレイヤーを取得出来る(これより良い方法をご存知の方は是非コメントお願いします!)

map.getLayers().forEach(function(layerGroup){
     getLayer(layerGroup);
 });
 function getLayer(layer){
    console.log(layer.get("title"));
    if(typeof layer.getLayers == 'function') {
         layer.getLayers().forEach(function (l) {
         getLayer(l);
     });
    }
 }

]]>
https://ufirst.jp/memo/2019/11/post-2309/feed/ 0 2309
ベイブレード大会マッピングサービス少し改良しました https://ufirst.jp/memo/2018/05/%e3%83%99%e3%82%a4%e3%83%96%e3%83%ac%e3%83%bc%e3%83%89%e5%a4%a7%e4%bc%9a%e3%83%9e%e3%83%83%e3%83%94%e3%83%b3%e3%82%b0%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9%e5%b0%91%e3%81%97%e6%94%b9%e8%89%af%e3%81%97/ https://ufirst.jp/memo/2018/05/%e3%83%99%e3%82%a4%e3%83%96%e3%83%ac%e3%83%bc%e3%83%89%e5%a4%a7%e4%bc%9a%e3%83%9e%e3%83%83%e3%83%94%e3%83%b3%e3%82%b0%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9%e5%b0%91%e3%81%97%e6%94%b9%e8%89%af%e3%81%97/#respond Sat, 26 May 2018 00:00:55 +0000 https://ufirst.jp/memo/2018/05/02/%e3%83%99%e3%82%a4%e3%83%96%e3%83%ac%e3%83%bc%e3%83%89%e5%a4%a7%e4%bc%9a%e3%83%9e%e3%83%83%e3%83%94%e3%83%b3%e3%82%b0%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9%e5%b0%91%e3%81%97%e6%94%b9%e8%89%af%e3%81%97/

https://ufirst.jp/beybladeMap/
子供からベイブレードバーストの大会に連れてってくれと頼まれて、公式サイトを見たら探し辛かったので、自分の為に作ったこのサービス。
OpenLayersとCodeigniter3の学習も兼ねてます。
地図上で大会の開催予定がわかるサービスで、もっと検索機能(明日の大会だけ表示する)とか加えれば便利なんでしょうが、そこまでやる気が起きず一年前に作って放置していて、気がついたら動かなくなってました。
せっかくなので少し改修しました。

  • ベイターミナルの設置店舗の追加
  • アイコンを最新のやつにした

しかし当の本人はベイブレード本体の分解やら改造やら、色味塗りなどをして自作自演ベイブレードをツクリ初めてしまい大会に出るつもりはないようで。。
※改造すると大会に出れません

]]>
https://ufirst.jp/memo/2018/05/%e3%83%99%e3%82%a4%e3%83%96%e3%83%ac%e3%83%bc%e3%83%89%e5%a4%a7%e4%bc%9a%e3%83%9e%e3%83%83%e3%83%94%e3%83%b3%e3%82%b0%e3%82%b5%e3%83%bc%e3%83%93%e3%82%b9%e5%b0%91%e3%81%97%e6%94%b9%e8%89%af%e3%81%97/feed/ 0 1534
GISオープン教材について · GIS実習用オープン教材 https://ufirst.jp/memo/2018/03/gis%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e6%95%99%e6%9d%90%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6-%c2%b7-gis%e5%ae%9f%e7%bf%92%e7%94%a8%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e6%95%99%e6%9d%90/ https://ufirst.jp/memo/2018/03/gis%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e6%95%99%e6%9d%90%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6-%c2%b7-gis%e5%ae%9f%e7%bf%92%e7%94%a8%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e6%95%99%e6%9d%90/#respond Wed, 28 Mar 2018 23:23:00 +0000 https://ufirst.jp/memo/gis%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e6%95%99%e6%9d%90%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6-%c2%b7-gis%e5%ae%9f%e7%bf%92%e7%94%a8%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e6%95%99%e6%9d%90/
GIS実習オープン教材とは · GIS実習オープン教材
]]>
https://ufirst.jp/memo/2018/03/gis%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e6%95%99%e6%9d%90%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6-%c2%b7-gis%e5%ae%9f%e7%bf%92%e7%94%a8%e3%82%aa%e3%83%bc%e3%83%97%e3%83%b3%e6%95%99%e6%9d%90/feed/ 0 1410
OpenLayers4にラベルの重複避け機能が実装された https://ufirst.jp/memo/2017/12/openlayers4%e3%81%ab%e3%83%a9%e3%83%99%e3%83%ab%e3%81%ae%e9%87%8d%e8%a4%87%e9%81%bf%e3%81%91%e6%a9%9f%e8%83%bd%e3%81%8c%e5%ae%9f%e8%a3%85%e3%81%95%e3%82%8c%e3%81%9f/ https://ufirst.jp/memo/2017/12/openlayers4%e3%81%ab%e3%83%a9%e3%83%99%e3%83%ab%e3%81%ae%e9%87%8d%e8%a4%87%e9%81%bf%e3%81%91%e6%a9%9f%e8%83%bd%e3%81%8c%e5%ae%9f%e8%a3%85%e3%81%95%e3%82%8c%e3%81%9f/#respond Thu, 14 Dec 2017 07:17:57 +0000 https://ufirst.jp/memo/openlayers4%e3%81%ab%e3%83%a9%e3%83%99%e3%83%ab%e3%81%ae%e9%87%8d%e8%a4%87%e9%81%bf%e3%81%91%e6%a9%9f%e8%83%bd%e3%81%8c%e5%ae%9f%e8%a3%85%e3%81%95%e3%82%8c%e3%81%9f/ OpenLayers Examples
いつの間にか ol.style.Textクラスに
overflow: true
というプロパティが追加されていた。これを有効にする事でラベルが重なったときにどれかひとつだけ表示する制御が入り、注記が大量にある場合もごちゃごちゃせずに表示出来るようになる。
この機能はMapboxGLではだいぶ前から実装されていた。

]]>
https://ufirst.jp/memo/2017/12/openlayers4%e3%81%ab%e3%83%a9%e3%83%99%e3%83%ab%e3%81%ae%e9%87%8d%e8%a4%87%e9%81%bf%e3%81%91%e6%a9%9f%e8%83%bd%e3%81%8c%e5%ae%9f%e8%a3%85%e3%81%95%e3%82%8c%e3%81%9f/feed/ 0 1364
Openlayers3/4で緯度経度とズームレベルをURL にくっつける方法 https://ufirst.jp/memo/2017/09/openlayers34%e3%81%a7%e7%b7%af%e5%ba%a6%e7%b5%8c%e5%ba%a6%e3%81%a8%e3%82%ba%e3%83%bc%e3%83%a0%e3%83%ac%e3%83%99%e3%83%ab%e3%82%92url-%e3%81%ab%e3%81%8f%e3%81%a3%e3%81%a4%e3%81%91%e3%82%8b%e6%96%b9/ https://ufirst.jp/memo/2017/09/openlayers34%e3%81%a7%e7%b7%af%e5%ba%a6%e7%b5%8c%e5%ba%a6%e3%81%a8%e3%82%ba%e3%83%bc%e3%83%a0%e3%83%ac%e3%83%99%e3%83%ab%e3%82%92url-%e3%81%ab%e3%81%8f%e3%81%a3%e3%81%a4%e3%81%91%e3%82%8b%e6%96%b9/#respond Fri, 29 Sep 2017 09:31:49 +0000 https://ufirst.jp/memo/openlayers34%e3%81%a7%e7%b7%af%e5%ba%a6%e7%b5%8c%e5%ba%a6%e3%81%a8%e3%82%ba%e3%83%bc%e3%83%a0%e3%83%ac%e3%83%99%e3%83%ab%e3%82%92url-%e3%81%ab%e3%81%8f%e3%81%a3%e3%81%a4%e3%81%91%e3%82%8b%e6%96%b9/ https://github.com/frogcat/ol-hash
こちらを利用すると地図を移動させるごとにhashに緯度経度とズームレベルを設定してくれて、地理院地図みたいな動きにすることが可能。
作者に感謝

]]>
https://ufirst.jp/memo/2017/09/openlayers34%e3%81%a7%e7%b7%af%e5%ba%a6%e7%b5%8c%e5%ba%a6%e3%81%a8%e3%82%ba%e3%83%bc%e3%83%a0%e3%83%ac%e3%83%99%e3%83%ab%e3%82%92url-%e3%81%ab%e3%81%8f%e3%81%a3%e3%81%a4%e3%81%91%e3%82%8b%e6%96%b9/feed/ 0 1282