トップ地図アプリMap > 地図アプリMap3開発記録

地図アプリMap3開発記録

2024.1.14 過去のGPS軌跡表示でパス修正漏れがあったのを直した

2024.1.13 ログファイルをスマホは Map/SP、タブレットは Map/TC に移動した

いずれ Windows TabletのときのGPSログや写真は Map/WT に置きたい。

2024.1.13 OSM地図レンダリング用ファイルを Map/OSM に移動した

プログラムの修正は3か所。

2024.1.13 Map/tiles3 を Map/GSI に変更した

プログラムの修正は2か所のみ。国土地理院サイトからのダウンロードファイルを置く。

2024.1.13 アイコンは Common/img のファイルを使うように変更した

修正は1か所のみ。

2024.1.13 バス時刻表は Common/guides のファイルを使うように変更した

修正は1か所のみ。

2024.1.13 新しいフォルダへの移行に着手した。まず、Commonフォルダについて実行した

ミラーリングダウンロードのバグも解決した。まず、Map/Common に guides、img、infos を置いた。

パソコンの c:/_www/_Common に原本を置き、レンタルサーバーにミラーリングアップロードする。 これをスマホとタブレットにミラーリングダウンロードする。

2024.1.12 ミラーリングダウンロードの最初のプログラムを完成した

再帰処理で接続数が制限値を超えるようだ。

時刻がサーバー側の時刻に変更されていない。

2024.1.3 国土地理院の標高データにより地図中心の標高を表示するようにした

2024.1.1 バス停アイコンからバス時刻表を表示するようにした

2023.12.31 目盛表示をサポートした

タブレットでは明らかに目盛幅が間違っている。

MapXでも同じであった。元のPC版でも間違いがあったのかも知れない。 参考情報のため、ずっと気づかなかったのかも知れない。 あるいは、最初は正しかったが、バージョンアップを重ねたため、どこかで誤りが混入したのかも知れない。

原点に立ち戻って見直す。赤道上の横幅は分かりやすいが、任意の地点のメルカトル図法上の幅の算出は複雑である。

タイル(256x256画素)の横幅は何メートルかを求める。縦幅と横幅は異なる。

緯度により異なる。表示範囲の中心線の緯度を求める。zoom 0 での1画素のサイズは156543.034メートルである。

現在のzoom、表示範囲の中心での画素の横幅は次式 resolution メートルとなる。

    double latHere = Y2Lat((CY+H/2.0)/PX, zoom);
    double resolution = 156543.034*Math.cos(deg2rad(latHere))/Math.pow(2,zoom);

表示する目盛りの横幅を dist メートルとすれば、画素数 w は (int)(dist/resolution) となる。

現在のプログラムでは横幅を 2*w としている。まず、これが間違いである。 プログラム上は w = (int)(dist/resolution/2); とした方が楽である。

タイルサイズが 256x256画素の場合はこれでよい。スマホのようにタイルの画素数が Scale倍のときの表示にも誤りがある。 resolutionは タイルサイズが 256x256画素に対するものであるから、 タイルサイズが Scale倍のときは、1画素当たりのサイズは 1/Scale になる。

したがって、w の算出は以下のようにする必要がある。これで、修正された。

 int w = (int)(dist/resolution/2*Scale);

2023.12.23 過去のGPSログ表示をサポートした

2023.12.20 時速表示を追加した

100要素(5分)のサイクリックバッファにGPSログのspeedを蓄積、直近の1(または2)分間を除き、 4(または3)分間の平均時速を表示する。

まずはもっと簡単に過去10分間の平均時速を表示する。実際に歩いてみた。 時速確認時には、歩速を緩めたり、立ち止まったりするが、それが平均時速に与える影響は僅かなため、 これでいいだろう。

2023.12.19 MapXと同様に標高表示を追加した

2023.12.18 ペデストリアンデッキの枠線描画を追加

MapXと同じようにした。

この他にも漏れはあると思うが、新Mapアプリを使いながら、気づいたときに追加修正する。

2023.12.18 文字の縁取り(halo)の幅に scale をかけた

タイル画像サイズを scale倍にする場合、halo にも scale をかけるのを忘れていた。 これを補い、スマホでも、文字が見やすくなった。

2023.12.18 スマホではアイコンだけで店名などが表示されない

タブレットでは表示される。排他制御の矩形計算で倍率のかけ方が間違っているのかも知れない。

スマホでは renderSymbol は 768x768画素に対して実行している。デバッグのため、タブレットではタイルサイズを 512x512画素にしてみる。

その結果、アイコンだけで文字は表示されなくなった。重なり回避を無視してみると、アイコンと文字に少し重なりがあることが分かった。

垂直方向シフト dy に、scale をかけるのを忘れていたことが原因であった。この修正で正しく表示されるようになった。

2023.12.17 バス路線図をサポートした

仕様は MapX と同じであるが、プログラムは少し簡単化できた。

2023.12.16 2時間弱の散歩+バスでスマホ、タブレットとも順調に動いた

2023.12.16 国土地理院地図の表示タイルが大幅に崩れる

スマホではOSMタイルが表示される。タブレットでは別のタイルが表示される。

logcatのエラーメッセージで分かった。 android.permission.INTERNET を省いたのは間違いだった。元に戻して直った。

2023.12.15 バス時刻表をサポートした

リファレンス

[1] GIS:日本のDEMデータの入手方法
[2] 標高タイルの詳細仕様
[3] 標高タイルの作成方法と地理院地図で表示される標高値について