本サイトでは、地図を用いたページがいくつかありますが、よく利用される機能を関数としてまとめて maplib.js としました。
<script src="https://www.kogures.com/hitoshi/javascript/maplib/maplib.js"></script>
で利用できますが、むしろ[js表示]により、別ウインドウに表示されるソースコードをコピーして適宜カスタマイズされるのがよいと思います。
2020年以降の町村合併などによる変更は反映していません。
緯度,経度を与えて、都道府県コード(5桁)と、地名を戻します。
国土地理院の ttps://mreversegeocoder.gsi.go.jp/reverse-geocoder/~」を利用しますが、
クライアント側では、特別な設定は不要です。
reverseGeocoder() は、async/await を用いているので、呼出側の関数も、async/await を用いる必要があります。
async function reverseGeocoderTest() {
var 緯度 = eval(document.reverseGeocoderForm.緯度.value);
var 経度 = eval(document.reverseGeocoderForm.経度.value);
var [コード, 地名] = await reverseGeocoder(緯度, 経度);
document.reverseGeocoderForm.コード.value = コード;
document.reverseGeocoderForm.地名.value = 地名;
実務的には、多数の場所があり、それぞれの住所も、府県名、市区名、地名にしたいし、
結果の再利用のために、別ウインドウにCSV形式で出力するのが、適切でしょう。
1場所ごとに、reverseGeocoder を利用してコードと地名を取得して、
関数 市区町村(コード)により、府県名と市区名を取得しています。
HTMLでの記述
<input id="ファイル指定" type="file" // 指定:"ファイル指定"
accept=".jpg, .jpeg"
multiple
onChange="showEXIF('ファイル指定', 'showEXIF画像名表示場所', 'showEXIF表示場所')">
</input>
<div id="showEXIF画像名表示場所"></div>
<div id="showEXIF表示場所"></div>
HTML標準機能であるFileAPI の機能を用いて、ローカル写真画像(jpegファイル)を選択し、
公開ライブラリ exif.js を用いて、画像に付帯しているEXIF情報を取り出し、
maplib.js の関数 showEXIF() を呼び出しています。
画像名を画像名表示場所、画像のwidth,height,撮影日, 緯度, 経度をEXIF表示場所に表示します。
exif.js を用いるには、
<script src="https://cdn.jsdelivr.net/npm/exif-js"></script>
が必要です。
=======================
以下は、showEXIF で得た緯度、経度から逆ジオコーディングで住所を取得し、
さらに、これらの出力情報を再読込して、写真の情報をCSV形式で別ウインドウに出力しています。
アルバム整理などに役立つと思います。
なお、途中の出力が煩雑ならば、
<div hidden id="showEXIF画像名表示場所"></div>
として非表示にできます。
=======================
ファイル指定(複数)経度、緯度を読み込み、逆ジオコーディングで住所を取得する。
全体を別ウインドウに表示する
↓地図表示場所 <div id="drawMapLeaflet地図表示場所"></div>
HTMLに設定した「地図表示場所」のサイズを(横幅, 縦高)に設定し(下右の位置)、
緯度、経度の平均値を中央にした地図を表示します。
(緯度, 経度)の位置にマーカーを表示、クリックするとポップアップが表示されます。
緯度, 経度, アイコン, ポップアップは(1か所だけの場合も)配列で与えます。
地図作成に Leaflet を用いているので、head部に次の記述が必要です。
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.5.1/dist/leaflet.css">
<script src="https://unpkg.com/leaflet@1.5.1/dist/leaflet.js"></script>
「アイコン画像のURL」では、多数のサンプルがWebで無料公開されています。
maplibでも、単純なサンプルを用意しています。
アイコン名は、「形状+色+添字」の形式になっています。
形状:p(通常)、c(円形)
色:r(赤), g(緑), b(青), y(黄)
添字:なし、 0,1,2,…,20
例えば、"icon/pr1.png" は、赤色のピン形で中央に1があるアイコンになります。
iconUrl: "icon/pr" + i + ".png",
とすれば、中央に 0,1,2,…がある複数のアイコンを指定できます。
↓<div id="clickMapLeaflet地図表示場所"></div>
↓<div id="clickMapLeaflet結果表示場所"></div>
HTMLに設定した「地図表示場所」のサイズを(横幅, 縦高)に設定し(下右の青い位置)、
中心緯度, 中心経度, ズームによる地図を表示します。
その地図をクリックした点にマーカーが表示され、
結果表示場所(下右の赤い位置)に緯度経度が表示されます。
地図作成に Leaflet を用いているので、head部に次の記述が必要です。
<link rel="stylesheet" href="https://unpkg.com/leaflet@1.5.1/dist/leaflet.css">
<script src="https://unpkg.com/leaflet@1.5.1/dist/leaflet.js"></script>