選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

140 行
5.1KB

  1. var p_date = document.getElementById("p_date");
  2. var map1 = L.map('map1').setView([49.4093524, 8.6931736], 15);
  3. var map2 = L.map('map2').setView([49.4093524, 8.6931736], 15);
  4. map1.sync(map2);
  5. map2.sync(map1);
  6. var tile = "https://c.tile.openstreetmap.org/{z}/{x}/{y}.png "
  7. var layer1 = L.tileLayer(tile, {
  8. attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
  9. }).addTo(map1);
  10. var layer2 = L.tileLayer(tile, {
  11. attribution: '&copy; <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
  12. }).addTo(map2);
  13. //var layer1 = L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
  14. // attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
  15. // maxZoom: 18,
  16. // id: 'mapbox.streets',
  17. // accessToken: 'pk.eyJ1IjoicG9zdGZsYXYiLCJhIjoiY2syN29xZHVpMnlzcDNtbXZkN2tlYWdhaSJ9.Th5tmsyOlPKoogGrOQrMNA'
  18. //});
  19. //var layer2 = L.tileLayer('https://api.tiles.mapbox.com/v4/{id}/{z}/{x}/{y}.png?access_token={accessToken}', {
  20. // attribution: 'Map data &copy; <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="https://www.mapbox.com/">Mapbox</a>',
  21. // maxZoom: 18,
  22. // id: 'mapbox.hiking',
  23. // accessToken: 'pk.eyJ1IjoicG9zdGZsYXYiLCJhIjoiY2syN29xZHVpMnlzcDNtbXZkN2tlYWdhaSJ9.Th5tmsyOlPKoogGrOQrMNA'
  24. //});
  25. layer1.addTo(map1);
  26. layer2.addTo(map2);
  27. function mk_not_bloom_icon(label) {
  28. return new L.DivIcon({
  29. className: 'no-bloom-icon',
  30. html: '<img class="no-bloom-icon" src="/home/christian/repos/bloomMap2k19/bloomhunt/map/static/map/tree_not_blooming.png"/>' +
  31. '<span>' + label + '</span>',
  32. iconAnchor: [15, 30]
  33. });
  34. }
  35. function mk_bloom_icon(label) {
  36. return new L.DivIcon({
  37. className: 'bloom-icon',
  38. html: '<img class="no-bloom-icon" src="/home/christian/repos/bloomMap2k19/bloomhunt/map/static/map/tree_blooming.png"/>' +
  39. '<span>' + label + '</span>',
  40. iconAnchor: [15, 30]
  41. });
  42. }
  43. //var not_bloom_icon = L.icon({
  44. // iconUrl: 'tree_not_blooming.png',
  45. //
  46. // iconSize: [40, 40], // size of the icon
  47. // shadowSize: [0, 0], // size of the shadow
  48. // iconAnchor: [20, 40], // point of the icon which will correspond to marker's location
  49. // shadowAnchor: [4, 62], // the same for the shadow
  50. // popupAnchor: [-3, -76] // point from which the popup should open relative to the iconAnchor
  51. //});
  52. //var bloom_icon = L.icon({
  53. // iconUrl: 'tree_blooming.png',
  54. //
  55. // iconSize: [40, 40], // size of the icon
  56. // shadowSize: [0, 0], // size of the shadow
  57. // iconAnchor: [20, 40], // point of the icon which will correspond to marker's location
  58. // shadowAnchor: [4, 62], // the same for the shadow
  59. // popupAnchor: [-3, -76] // point from which the popup should open relative to the iconAnchor
  60. //});
  61. class Tree {
  62. constructor(name, bloom_start, xcoord, ycoord) {
  63. this.name = name;
  64. this.bloom_start = bloom_start;
  65. this.marker = L.marker([xcoord, ycoord],
  66. {icon: mk_not_bloom_icon(this.name)});
  67. this.blooming = false;
  68. }
  69. update(dayno) {
  70. if ((dayno < this.bloom_start || dayno >= this.bloom_start + 14)
  71. && this.blooming) {
  72. this.marker.setIcon(mk_not_bloom_icon(this.name));
  73. this.blooming = false;
  74. } else if (dayno >= this.bloom_start
  75. && dayno < this.bloom_start + 14
  76. && !this.blooming) {
  77. this.marker.setIcon(mk_bloom_icon(this.name));
  78. this.blooming = true;
  79. }
  80. }
  81. }
  82. var tree = new Tree("Fritz", 55, 49.4093524, 8.6931736);
  83. var tree2 = new Tree("Hans", 80, 45.02, 8.6931736);
  84. var tree3 = new Tree("Hans", 80, 49.02, 8.69317);
  85. var a_tree = new Tree("Fritz", 120, 49.4093524, 8.6931736);
  86. var a_tree2 = new Tree("Hans", 100, 45.02, 8.6931736);
  87. var a_tree3 = new Tree("Hans", 100, 49.02, 8.69317);
  88. function updateMap(value) {
  89. tree.update(value);
  90. tree2.update(value);
  91. tree3.update(value);
  92. a_tree.update(value);
  93. a_tree2.update(value);
  94. a_tree3.update(value);
  95. p_date.innerHTML = "Date: " + dateFromDay(value);
  96. }
  97. function dateFromDay(dayno) {
  98. var date = new Date(2019, 0); // initialize a date in `year-01-01`
  99. var date2 = new Date(date.setDate(dayno));
  100. return date2.getMonth() + 1 + "-" + date2.getDate();
  101. }
  102. var cities1 = L.layerGroup([tree.marker, tree2.marker, tree3.marker]);
  103. var cities2 = L.layerGroup([a_tree.marker, a_tree2.marker, a_tree3.marker]);
  104. cities1.addTo(map1);
  105. cities2.addTo(map2);
  106. //var control1 = L.control.layers({'2019': cities1, '2020': cities1}, null, {collapsed: false});
  107. //var control2 = L.control.layers({'2019': cities2, '2020': cities2}, null, {collapsed: false});
  108. //control1.addTo(map1);
  109. //control2.addTo(map2);
  110. //map1.on('baselayerchange', function(val) {
  111. // console.log(val);
  112. //});
  113. //
  114. //map2.on('baselayerchange', function(val) {
  115. // console.log("map2", val);
  116. //});