leaflet:get_latlngzoom
差分
このページの2つのバージョン間の差分を表示します。
| 両方とも前のリビジョン前のリビジョン次のリビジョン | 前のリビジョン | ||
| leaflet:get_latlngzoom [2018/09/11 20:08] – 管理者 | leaflet:get_latlngzoom [2018/09/30 09:53] (現在) – 管理者 | ||
|---|---|---|---|
| 行 1: | 行 1: | ||
| + | [[: | ||
| + | ====== Leaflet 中心座標とズーム値を取得 ====== | ||
| + | Leaflet 1系を使用して地図の中心座標(緯度・経度)とズーム倍率を表示します。 | ||
| + | |||
| + | 注意:「Leaflet勉強のための試作プログラムなので間違っている可能性があります」「DokuWikiは個別にヘッダを編集できないので通常とは少し違う構造になっています」 | ||
| + | ---- | ||
| + | ===== デモ ===== | ||
| + | 地図のズーム変更や位置を移動すると地図上部の緯度・経度・倍率の表示が変化します。input要素とspan要素の2方式で出力しています。 | ||
| + | |||
| + | < | ||
| + | <p> | ||
| + | 緯度< | ||
| + | 経度< | ||
| + | 倍率< | ||
| + | </p> | ||
| + | |||
| + | <div id=" | ||
| + | <script src=" | ||
| + | < | ||
| + | function cssLoad(cssFile){ | ||
| + | if(document.all){ | ||
| + | document.createStyleSheet(cssFile); | ||
| + | }else{ | ||
| + | var link = document.createElement(" | ||
| + | link.rel = " | ||
| + | link.href = cssFile; | ||
| + | link.type = " | ||
| + | document.getElementsByTagName(' | ||
| + | } | ||
| + | } | ||
| + | cssLoad(" | ||
| + | function addOnload(evtFunc){ | ||
| + | if(window.addEventListener) { | ||
| + | window.addEventListener(' | ||
| + | } else if(window.attachEvent){ //IE用 | ||
| + | window.attachEvent(' | ||
| + | } else { | ||
| + | // | ||
| + | } | ||
| + | } | ||
| + | var mymap; | ||
| + | addOnload(function(){ | ||
| + | mymap = L.map(' | ||
| + | L.tileLayer(' | ||
| + | maxZoom: 18, | ||
| + | attribution: | ||
| + | }).addTo(mymap); | ||
| + | mymap.setView([35.6896, | ||
| + | |||
| + | outputPos(mymap); | ||
| + | |||
| + | | ||
| + | var crossIcon = L.icon({ | ||
| + | iconUrl: ' | ||
| + | iconSize: [32, 32], | ||
| + | iconAnchor: [16, 16] | ||
| + | }); | ||
| + | var crossMarker = L.marker( mymap.getCenter(), | ||
| + | |||
| + | mymap.on(' | ||
| + | crossMarker.setLatLng(mymap.getCenter()); | ||
| + | outputPos(mymap); | ||
| + | }); | ||
| + | }); | ||
| + | |||
| + | function outputPos(map){ | ||
| + | var pos = map.getCenter(); | ||
| + | var zoom = map.getZoom(); | ||
| + | // | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | // | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | } | ||
| + | |||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | < | ||
| + | <script async src="// | ||
| + | <!-- respon_0 --> | ||
| + | <ins class=" | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | < | ||
| + | (adsbygoogle = window.adsbygoogle || []).push({}); | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ---- | ||
| + | ===== ソースコード ===== | ||
| + | コメント行のある部分が[[map]]から追加された部分です。 | ||
| + | |||
| + | Html部分 | ||
| + | <code html> | ||
| + | <!-- 緯度・経度・倍率をページ上に表示する要素 --> | ||
| + | <p> | ||
| + | 緯度< | ||
| + | 経度< | ||
| + | 倍率< | ||
| + | </p> | ||
| + | |||
| + | <div id=" | ||
| + | </ | ||
| + | JavaScript部分 | ||
| + | <code javascript> | ||
| + | <script src=" | ||
| + | < | ||
| + | function cssLoad(cssFile){ | ||
| + | if(document.all){ | ||
| + | document.createStyleSheet(cssFile); | ||
| + | }else{ | ||
| + | var link = document.createElement(" | ||
| + | link.rel = " | ||
| + | link.href = cssFile; | ||
| + | link.type = " | ||
| + | document.getElementsByTagName(' | ||
| + | } | ||
| + | } | ||
| + | cssLoad(" | ||
| + | function addOnload(evtFunc){ | ||
| + | if(window.addEventListener) { | ||
| + | window.addEventListener(' | ||
| + | } else if(window.attachEvent){ //IE用 | ||
| + | window.attachEvent(' | ||
| + | } else { | ||
| + | // | ||
| + | } | ||
| + | } | ||
| + | var mymap; | ||
| + | addOnload(function(){ | ||
| + | mymap = L.map(' | ||
| + | L.tileLayer(' | ||
| + | maxZoom: 18, | ||
| + | attribution: | ||
| + | }).addTo(mymap); | ||
| + | mymap.setView([35.6896, | ||
| + | |||
| + | |||
| + | // | ||
| + | outputPos(mymap); | ||
| + | | ||
| + | var crossIcon = L.icon({ // | ||
| + | iconUrl: ' | ||
| + | iconSize: [32, 32], | ||
| + | iconAnchor: [16, 16] | ||
| + | }); | ||
| + | var crossMarker = L.marker( mymap.getCenter(), | ||
| + | |||
| + | // | ||
| + | mymap.on(' | ||
| + | crossMarker.setLatLng(mymap.getCenter()); | ||
| + | |||
| + | // | ||
| + | outputPos(mymap); | ||
| + | | ||
| + | }); | ||
| + | }); | ||
| + | |||
| + | // | ||
| + | function outputPos(map){ | ||
| + | var pos = map.getCenter(); | ||
| + | var zoom = map.getZoom(); | ||
| + | // | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | // | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | } | ||
| + | |||
| + | |||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | < | ||
| + | <script async src="// | ||
| + | <!-- respon_0 --> | ||
| + | <ins class=" | ||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | < | ||
| + | (adsbygoogle = window.adsbygoogle || []).push({}); | ||
| + | </ | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | ---- | ||
| + | ===== 説明 ===== | ||
| + | マップの基本部分については[[map]]をご覧ください。 | ||
| + | |||
| + | センタークロスの表示については[[cross]]をご覧ください。 | ||
| + | |||
| + | |||
| + | |||
| + | html上に中心座標(緯度・経度)と倍率を表示する要素を準備します。id名をキーとして値が出力されます。input要素とspan要素の2方式に出力していますが不要な項目は後述の関数部分と一緒に削除して下さい。 | ||
| + | |||
| + | <code html> | ||
| + | <p> | ||
| + | 緯度< | ||
| + | 経度< | ||
| + | 倍率< | ||
| + | </p> | ||
| + | </ | ||
| + | |||
| + | |||
| + | 地図の中心座標(緯度・経度)と倍率を取得して上記のhtmlに出力する関数。input要素とspan要素の2方式に出力していますが不要な項目は削除して下さい。 | ||
| + | <code javascript> | ||
| + | function outputPos(map){ | ||
| + | var pos = map.getCenter(); | ||
| + | var zoom = map.getZoom(); | ||
| + | // | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | // | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | 上記関数を実行するの部分は下記の2個所、で1つめは '' | ||
| + | <code javascript> | ||
| + | // | ||
| + | outputPos(mymap); | ||
| + | </ | ||
| + | <code javascript> | ||
| + | // | ||
| + | outputPos(mymap); | ||
| + | //}); | ||
| + | </ | ||
| + | |||
| + | ===== おまけ1 ===== | ||
| + | 表示エリアの左上や右下の座標を取得したい場合は。 | ||
| + | <code php> | ||
| + | var bounds = mymap.getBounds(); | ||
| + | var posNW=bounds.getNorthWest(); | ||
| + | var posSE=bounds.getSouthEast(); | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | // | ||
| + | </ | ||
| + | |||
| + | 北東の端と南西の端を取得したい場合は下記を使う。 | ||
| + | <code php> | ||
| + | //var pos=bounds.getNorthEast(); | ||
| + | //var pos=bounds.getSouthWest(); | ||
| + | </ | ||
| + | |||
| + | |||
| + | ===== おまけ2 ===== | ||
| + | 緯度経度の少数以下の桁数が多すぎる場合には下記のように '' | ||
| + | <code javascript> | ||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | |||
| + | document.getElementById(' | ||
| + | document.getElementById(' | ||
| + | </ | ||
