leaflet-map.js 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. window.SONATA_CONFIG.USE_ICHECK = false;
  2. var map,
  3. defaultCoords,
  4. drawnItems,
  5. marker,
  6. loc,
  7. dataValue;
  8. $(document).ready(function () {
  9. defaultCoords = new L.latLng(39.791312, -2.6949709); // España
  10. map = new L.Map('map', {zoom: getZoomLevel(), center: getDataCoords()});
  11. drawnItems = L.featureGroup().addTo(map);
  12. L.control.layers(
  13. {
  14. 'openstreetmap': L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png',
  15. {
  16. maxZoom: 18,
  17. attribution: '&copy; <a href="http://openstreetmap.org/copyright">OpenStreetMap</a> contributors'
  18. }).addTo(map),
  19. "google": L.tileLayer('http://www.google.com.ar/maps/vt?lyrs=y@189&gl=cn&x={x}&y={y}&z={z}',
  20. {
  21. maxZoom: 18,
  22. attribution: 'google'
  23. })
  24. },
  25. {
  26. 'drawlayer': drawnItems
  27. },
  28. {
  29. position: 'topleft',
  30. collapsed: false
  31. }).addTo(map);
  32. var drawControl = new L.Control.Draw({
  33. draw: {
  34. polygon: false,
  35. rectangle: false,
  36. polyline: false,
  37. circle: false
  38. },
  39. edit: {
  40. featureGroup: drawnItems,
  41. edit: false
  42. }
  43. });
  44. map.addControl(drawControl);
  45. map.on(L.Draw.Event.CREATED, function (e) {
  46. var layer = e.layer;
  47. loc = new L.latLng(layer._latlng);
  48. drawMarker();
  49. setDataValue();
  50. });
  51. map.on('zoomend', function () {
  52. setDataValue();
  53. });
  54. });
  55. function getDataCoords()
  56. {
  57. var jsonParseData = {};
  58. if ($('[name$="[extraData]"]').val()) {
  59. dataValue = $('[name$="[extraData]"]').val();
  60. }
  61. if (dataValue) {
  62. jsonParseData = JSON.parse(dataValue);
  63. }
  64. loc = defaultCoords;
  65. if (jsonParseData.lat && jsonParseData.lng) {
  66. loc = new L.latLng(jsonParseData.lat, jsonParseData.lng);
  67. }
  68. return loc;
  69. }
  70. function drawMarker()
  71. {
  72. if (marker) {
  73. drawnItems.removeLayer(marker);
  74. }
  75. map.panTo(loc);
  76. marker = L.marker([loc.lat, loc.lng]);
  77. drawnItems.addLayer(marker);
  78. }
  79. function getZoomLevel()
  80. {
  81. var jsonParseData = {};
  82. var zoomLevel = 18;
  83. if ($('[name$="[extraData]"]').val()) {
  84. dataValue = $('[name$="[extraData]"]').val();
  85. }
  86. if (dataValue) {
  87. jsonParseData = JSON.parse(dataValue);
  88. }
  89. if (jsonParseData.zoom) {
  90. zoomLevel = jsonParseData.zoom;
  91. }
  92. return zoomLevel;
  93. }