Newer
Older
www-root / osm / ol3ex9.js
@Hayashi.yuu Hayashi.yuu on 3 May 2017 3 KB append 'osm' folder
  1. var cyberJ = null; // 地理院地図用の変数
  2.  
  3. var center_lon = 136.181193333; // 中心の経度(大杉谷,宮川第三発電所)
  4. var center_lat = 34.2329783333; // 中心の緯度(大杉谷,宮川第三発電所)
  5.  
  6. var kml_url = "data/map_data1.kml"; // "map_data1.kml"
  7.  
  8. var initZoom = 15; // ズームの初期値
  9. var MinZoom = 6; // ズームの最小値(最も広い範囲)
  10. var MaxZoom = 21; // ズームの最大値(最も狭い範囲)
  11.  
  12. var initPrecision = 8; // 座標表示の小数点以下の桁数の初期値
  13. var initOpacity = 1.0; // 不透明度の初期値
  14. var gMaxOpacity = 1.0; // 不透明度の最大値
  15. var gMinOpacity = 0.0; // 不透明度の最小値
  16. //*******************************************************************
  17.  
  18. function init_map() {
  19. // 表示用の view 変数の定義
  20. var view = new ol.View({maxZoom: MaxZoom, minZoom:MinZoom});
  21.  
  22. // cyberJ の opacity をいじるために,cyberJ という変数に入れている。
  23. cyberJ = new ol.layer.Tile({
  24. opacity: initOpacity,
  25. source: new ol.source.XYZ({
  26. attributions: [ new ol.Attribution({ html: "<a href='http://maps.gsi.go.jp/development/ichiran.html' target='_blank'>国土地理院</a>" }) ],
  27. url: "http://cyberjapandata.gsi.go.jp/xyz/std/{z}/{x}/{y}.png", projection: "EPSG:3857"
  28. })
  29. });
  30.  
  31. // 経路の KML データ
  32. // v3.11.0 以降の場合は new ol.format.KML() を new ol.format.KML({ showPointNames: false }) とする。
  33. var kml_vector = new ol.layer.Vector({
  34. source: new ol.source.Vector({
  35. url: kml_url,
  36. format: new ol.format.KML({ showPointNames: false })
  37. })
  38. });
  39.  
  40. // -------------------------------------------------------------------
  41. // 地図変数 (map 変数) の定義。地理院地図を表示するように指定している
  42. var map = new ol.Map({
  43. target: document.getElementById('map_canvas'),
  44. layers: [cyberJ, kml_vector],
  45. view: view,
  46. renderer: ['canvas', 'dom'],
  47. controls: ol.control.defaults().extend([new ol.control.ScaleLine()]),
  48. interactions: ol.interaction.defaults()
  49. });
  50.  
  51. // zoom slider の追加
  52. map.addControl(new ol.control.ZoomSlider());
  53.  
  54. // 中心の指定。view に対して指定。transform を忘れないこと。
  55. view.setCenter(ol.proj.transform([center_lon, center_lat], "EPSG:4326", "EPSG:3857"));
  56.  
  57. // zoom の指定。view に対して指定する。
  58. view.setZoom(initZoom);
  59.  
  60. // span opacity_control (地理院地図の不透明度) に初期値(実数)を入れる。
  61. document.getElementById('opacity_control').innerHTML = initOpacity.toFixed(1);
  62.  
  63. } // 初期化
  64.  
  65. // -------------------------------------------------------------------
  66. // 地理院地図 (var cyberJ) の opacity(この場合は不透明度) を変える
  67. function changeOpacity(opacity) {
  68. var newOpacity = (parseFloat(document.getElementById('opacity_control').innerHTML) + opacity).toFixed(1); // 新しい opacity の値を求める
  69. newOpacity = Math.min(gMaxOpacity, Math.max(gMinOpacity, newOpacity)); // 最大値と最小値の範囲を超えないように
  70. cyberJ.setOpacity(newOpacity); // 地理院地図の opacity の変更
  71. document.getElementById('opacity_control').innerHTML = newOpacity.toFixed(1); // opacity の数字の表示書き換え
  72. }
  73.  
  74. function directSetOpacity(opacity) {
  75. cyberJ.setOpacity(opacity);
  76. document.getElementById('opacity_control').innerHTML = opacity.toFixed(1);
  77. }
  78.