markers.html 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8"/>
  5. <title>Maps</title>
  6. <link rel="stylesheet" media="all" href="../jquery-jvectormap.css"/>
  7. <style>
  8. ul {
  9. padding: 0;
  10. list-style: none;
  11. }
  12. .jvectormap-legend .jvectormap-legend-tick-sample {
  13. height: 26px;
  14. }
  15. .jvectormap-legend-icons {
  16. background: white;
  17. border: black 1px solid;
  18. }
  19. .jvectormap-legend-icons {
  20. color: black;
  21. }
  22. </style>
  23. <script src="assets/jquery-1.8.2.js"></script>
  24. <script src="../jquery-jvectormap.js"></script>
  25. <script src="../lib/jquery-mousewheel.js"></script>
  26. <script src="../src/jvectormap.js"></script>
  27. <script src="../src/abstract-element.js"></script>
  28. <script src="../src/abstract-canvas-element.js"></script>
  29. <script src="../src/abstract-shape-element.js"></script>
  30. <script src="../src/svg-element.js"></script>
  31. <script src="../src/svg-group-element.js"></script>
  32. <script src="../src/svg-canvas-element.js"></script>
  33. <script src="../src/svg-shape-element.js"></script>
  34. <script src="../src/svg-path-element.js"></script>
  35. <script src="../src/svg-circle-element.js"></script>
  36. <script src="../src/svg-image-element.js"></script>
  37. <script src="../src/svg-text-element.js"></script>
  38. <script src="../src/vml-element.js"></script>
  39. <script src="../src/vml-group-element.js"></script>
  40. <script src="../src/vml-canvas-element.js"></script>
  41. <script src="../src/vml-shape-element.js"></script>
  42. <script src="../src/vml-path-element.js"></script>
  43. <script src="../src/vml-circle-element.js"></script>
  44. <script src="../src/vml-image-element.js"></script>
  45. <script src="../src/map-object.js"></script>
  46. <script src="../src/region.js"></script>
  47. <script src="../src/marker.js"></script>
  48. <script src="../src/vector-canvas.js"></script>
  49. <script src="../src/simple-scale.js"></script>
  50. <script src="../src/ordinal-scale.js"></script>
  51. <script src="../src/numeric-scale.js"></script>
  52. <script src="../src/color-scale.js"></script>
  53. <script src="../src/legend.js"></script>
  54. <script src="../src/data-series.js"></script>
  55. <script src="../src/proj.js"></script>
  56. <script src="../src/map.js"></script>
  57. <script src="assets/jquery-jvectormap-us-aea-en.js"></script>
  58. <script>
  59. $(function(){
  60. var markers = [
  61. [61.18, -149.53],
  62. [21.18, -157.49],
  63. {latLng: [40.66, -73.56], name: 'New York City', style: {r: 8, fill: 'yellow'}},
  64. {latLng: [41.52, -87.37], style: {fill: 'red', r: 10}},
  65. {latLng: [35.22, -80.84]},
  66. {latLng: [31.52, -87.37]}
  67. ],
  68. values1 = [408, 512, 550, 781],
  69. values2 = [1, 2, 3, 4],
  70. values3 = {
  71. '4': 'bank',
  72. '5': 'factory'
  73. };
  74. var map = new jvm.Map({
  75. container: $('.map'),
  76. map: 'us_aea_en',
  77. labels: {
  78. regions: {
  79. render: function(code){
  80. var doNotShow = ['US-RI', 'US-DC'];
  81. if (doNotShow.indexOf(code) === -1) {
  82. return code.split('-')[1];
  83. }
  84. },
  85. offsets: function(code){
  86. return {
  87. 'CA': [-10, 10],
  88. 'ID': [0, 40],
  89. 'OK': [25, 0],
  90. 'LA': [-20, 0],
  91. 'FL': [45, 0],
  92. 'KY': [10, 5],
  93. 'VA': [15, 5],
  94. 'MI': [30, 30],
  95. 'AK': [50, -25],
  96. 'HI': [25, 50]
  97. }[code.split('-')[1]];
  98. }
  99. },
  100. markers: {
  101. render: function(index){
  102. return 'Marker '+index;
  103. }
  104. }
  105. },
  106. markers: markers,
  107. series: {
  108. markers: [{
  109. attribute: 'fill',
  110. scale: ['#C8EEFF', '#0071A4'],
  111. normalizeFunction: 'polynomial',
  112. values: values1,
  113. legend: {
  114. vertical: true
  115. }
  116. },{
  117. attribute: 'r',
  118. scale: [5, 20],
  119. normalizeFunction: 'polynomial',
  120. values: values2
  121. },{
  122. attribute: 'image',
  123. scale: {
  124. bank: 'assets/icon-bank.png',
  125. factory: 'assets/icon-factory.png'
  126. },
  127. values: values3,
  128. legend: {
  129. horizontal: true,
  130. cssClass: 'jvectormap-legend-icons',
  131. title: 'Business type'
  132. }
  133. }],
  134. regions: [{
  135. scale: {
  136. red: '#ff0000',
  137. green: '#00ff00'
  138. },
  139. attribute: 'fill',
  140. values: {
  141. "US-KS": 'red',
  142. "US-MO": 'red',
  143. "US-IA": 'green',
  144. "US-NE": 'green'
  145. },
  146. legend: {
  147. horizontal: true,
  148. title: 'Color'
  149. }
  150. },{
  151. values: {
  152. "US-NY": 'blue',
  153. "US-FL": 'blue'
  154. },
  155. attribute: 'fill'
  156. },{
  157. scale: {
  158. redGreen: 'assets/bg-red-green.png',
  159. yellowBlue: 'assets/bg-yellow-blue.png'
  160. },
  161. values: {
  162. "US-TX": 'redGreen',
  163. "US-CA": 'yellowBlue'
  164. },
  165. attribute: 'fill',
  166. legend: {
  167. horizontal: true,
  168. cssClass: 'jvectormap-legend-bg',
  169. title: 'Pattern',
  170. labelRender: function(v){
  171. return {
  172. redGreen: 'Low',
  173. yellowBlue: 'High'
  174. }[v];
  175. }
  176. }
  177. }]
  178. },
  179. regionsSelectable: true,
  180. markersSelectable: true,
  181. markersSelectableOne: true,
  182. selectedRegions: JSON.parse( window.localStorage.getItem('jvectormap-selected-regions') || '[]' ),
  183. selectedMarkers: JSON.parse( window.localStorage.getItem('jvectormap-selected-markers') || '[]' ),
  184. onMarkerTipShow: function(event, tip, index){
  185. tip.html(tip.html()+' (modified marker)');
  186. },
  187. onMarkerOver: function(event, index){
  188. console.log('marker-over', index);
  189. },
  190. onMarkerOut: function(event, index){
  191. console.log('marker-out', index);
  192. },
  193. onMarkerClick: function(event, index){
  194. console.log('marker-click', index);
  195. },
  196. onMarkerSelected: function(event, index, isSelected, selectedMarkers){
  197. console.log('marker-select', index, isSelected, selectedMarkers);
  198. if (window.localStorage) {
  199. window.localStorage.setItem(
  200. 'jvectormap-selected-markers',
  201. JSON.stringify(selectedMarkers)
  202. );
  203. }
  204. },
  205. onRegionTipShow: function(event, tip, code){
  206. tip.html(tip.html()+' (modified)');
  207. },
  208. onRegionOver: function(event, code){
  209. console.log('region-over', code, map.getRegionName(code));
  210. },
  211. onRegionOut: function(event, code){
  212. console.log('region-out', code);
  213. },
  214. onRegionClick: function(event, code){
  215. console.log('region-click', code);
  216. },
  217. onRegionSelected: function(event, code, isSelected, selectedRegions){
  218. console.log('region-select', code, isSelected, selectedRegions);
  219. if (window.localStorage) {
  220. window.localStorage.setItem(
  221. 'jvectormap-selected-regions',
  222. JSON.stringify(selectedRegions)
  223. );
  224. }
  225. },
  226. onViewportChange: function(e, scale, transX, transY){
  227. console.log('viewportChange', scale, transX, transY);
  228. }
  229. });
  230. $('.list-markers :checkbox').change(function(){
  231. var index = $(this).closest('li').attr('data-marker-index');
  232. if ($(this).prop('checked')) {
  233. map.addMarker( index, markers[index], [values1[index], values2[index], values3[index]] );
  234. } else {
  235. map.removeMarkers( [index] );
  236. }
  237. });
  238. $('.button-add-all').click(function(){
  239. $('.list-markers :checkbox').prop('checked', true);
  240. map.addMarkers(markers, [values1, values2, values3]);
  241. });
  242. $('.button-remove-all').click(function(){
  243. $('.list-markers :checkbox').prop('checked', false);
  244. map.removeAllMarkers();
  245. });
  246. $('.button-clear-selected-regions').click(function(){
  247. map.clearSelectedRegions();
  248. });
  249. $('.button-clear-selected-markers').click(function(){
  250. map.clearSelectedMarkers();
  251. });
  252. $('.button-remove-map').click(function(){
  253. map.remove();
  254. });
  255. $('.button-change-values').click(function(){
  256. map.series.regions[1].clear();
  257. map.series.regions[1].setValues({
  258. "US-TX": "black",
  259. "US-CA": "black"
  260. });
  261. });
  262. $('.button-reset-map').click(function(){
  263. map.reset();
  264. });
  265. });
  266. </script>
  267. </head>
  268. <body>
  269. <div class="map" style="width: 800px; height: 500px"></div>
  270. <ul class="list-markers">
  271. <li data-marker-index="0"><label><input checked type="checkbox"/> Marker 1</label></li>
  272. <li data-marker-index="1"><label><input checked type="checkbox"/> Marker 2</label></li>
  273. <li data-marker-index="2"><label><input checked type="checkbox"/> Marker 3</label></li>
  274. <li data-marker-index="3"><label><input checked type="checkbox"/> Marker 4</label></li>
  275. <li data-marker-index="4"><label><input checked type="checkbox"/> Marker 5</label></li>
  276. <li data-marker-index="5"><label><input checked type="checkbox"/> Marker 6</label></li>
  277. </ul>
  278. <input type="button" value="Add all" class="button-add-all"/>
  279. <input type="button" value="Remove all" class="button-remove-all"/>
  280. &nbsp;&nbsp;&nbsp;
  281. <input type="button" value="Clear selected regions" class="button-clear-selected-regions"/>
  282. <input type="button" value="Clear selected markers" class="button-clear-selected-markers"/>
  283. &nbsp;&nbsp;&nbsp;
  284. <input type="button" value="Remove map" class="button-remove-map"/>
  285. &nbsp;&nbsp;&nbsp;
  286. <input type="button" value="Change values" class="button-change-values"/>
  287. &nbsp;&nbsp;&nbsp;
  288. <input type="button" value="Reset map" class="button-reset-map"/>
  289. </body>
  290. </html>