script.blade.php 6.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271
  1. <script>
  2. mapboxgl.accessToken = 'pk.eyJ1IjoiYXJtMDIiLCJhIjoiY2s4OTIxb2FpMDJoNjNlbnQzcmF1and1cyJ9.lVxm5Y1NFV96PL3u7bGu1A';
  3. var coordinates = document.getElementById('coordinates');
  4. var map = new mapboxgl.Map({
  5. container: 'qrCodeMap',
  6. style: 'mapbox://styles/mapbox/streets-v11',
  7. center: [113.347842, -0.050812],
  8. zoom: 4,
  9. });
  10. var dragMarker = new mapboxgl.Marker({
  11. draggable: true,
  12. color: 'red'
  13. })
  14. .setLngLat([117.35918201131932, -4.227448935594907])
  15. .addTo(map);
  16. function setCircleRadius(point)
  17. {
  18. var mapLayer = map.getLayer('circle');
  19. if(typeof mapLayer !== 'undefined') {
  20. map.removeLayer('circle').removeSource('circle');
  21. }
  22. map.addSource("circle", {
  23. "type": "geojson",
  24. "data": {
  25. "type": "FeatureCollection",
  26. "features": [{
  27. "type": "Feature",
  28. "geometry": {
  29. "type": "Point",
  30. "coordinates": [point[0], point[1]]
  31. }
  32. }]
  33. }
  34. });
  35. const metersToPixelsAtMaxZoom = (meters, latitude) =>
  36. meters / 0.075 / Math.cos(latitude * Math.PI / 180)
  37. console.log(metersToPixelsAtMaxZoom(50, point[1]));
  38. map.addLayer({
  39. "id": "circle",
  40. "type": "circle",
  41. "source": "circle",
  42. "paint": {
  43. "circle-radius": {
  44. stops: [
  45. [0, 0], [20, metersToPixelsAtMaxZoom(50, point[1])] ],
  46. base: 2
  47. },
  48. "circle-color": "lightblue",
  49. "circle-opacity": 0.6
  50. }
  51. });
  52. }
  53. map.on('load', function() {
  54. setCircleRadius([117.35918201131932, -4.227448935594907]);
  55. });
  56. function onDragEnd() {
  57. var lngLat = dragMarker.getLngLat();
  58. setCircleRadius([lngLat.lng, lngLat.lat]);
  59. $.confirm({
  60. title: 'Location',
  61. content: '<b>Longitude : </b> ' + lngLat.lng + '<br /><b>Latitude : </b>' + lngLat.lat,
  62. type: 'blue',
  63. icon: 'fa fa-compass',
  64. typeAnimated: true,
  65. buttons: {
  66. close: function () {
  67. }
  68. }
  69. });
  70. }
  71. dragMarker.on('dragend', onDragEnd);
  72. var geocoder = new MapboxGeocoder({
  73. accessToken: mapboxgl.accessToken,
  74. mapboxgl: mapboxgl,
  75. marker: {
  76. color: 'red'
  77. },
  78. zoom: 16,
  79. placeholder: "Enter an address or place name",
  80. });
  81. map.addControl(geocoder, 'top-left');
  82. $(document).ready(function(){
  83. $("select#qrcode_select").on("change", function() {
  84. $.ajax({
  85. method: 'GET',
  86. url: '{{ url()->current() }}/longlat/' + $(this).val()
  87. }).done(function(data) {
  88. $("#addSiteBtn").hide();
  89. $("#editSiteBtn").hide();
  90. $("div.mapboxgl-marker.mapboxgl-marker-anchor-center").remove();
  91. var point = [data.longitude, data.latitude];
  92. var query = '{{URL::current()}}/radius/' + data.longitude + '/' + data.latitude;
  93. $.ajax({
  94. method: 'GET',
  95. url: query
  96. }).done(function(data) {
  97. var is_null = 0;
  98. data.forEach(function(result) {
  99. if (result.site_id != null) {
  100. is_null++;
  101. var site_id = result.site_id;
  102. }else{
  103. var site_id = 'BELUM TERDAFTAR';
  104. }
  105. var marker = new mapboxgl.Marker({
  106. draggable: false,
  107. color: 'orange'
  108. })
  109. .setLngLat([result.sid_long, result.sid_lat])
  110. .setPopup(new mapboxgl.Popup({ offset: 25 })
  111. .setHTML('<img style="width: 70px;height: 60px;" src="http://localhost/ISR/public/sdppi.png" alt=""><br><div style="text-align: left;"><table class="table"><tbody><tr><td style="font-weight: bold">SITE ID</td><td>:</td><td>'+ site_id +'</td></tr><tr><td style="font-weight: bold">CLIENT ID</td><td>:</td><td>'+ result.clnt_id +'</td></tr><tr><td style="font-weight: bold">CLIENT NAME</td><td>:</td><td>'+ result.clnt_name +'</td></tr><tr><td style="font-weight: bold">CITY</td><td>:</td><td>'+ result.city +'</td></tr></tbody></table></div>'))
  112. .addTo(map);
  113. });
  114. if (data.length >= 1) {
  115. if (is_null >= 1) {
  116. $("#editSiteBtn").show();
  117. $("#editPayload").val(JSON.stringify(data));
  118. }
  119. else {
  120. $("#addSiteBtn").show();
  121. $("#createPayload").val(JSON.stringify(data));
  122. $("#createLongLat").val(JSON.stringify(dragMarker.getLngLat()));
  123. }
  124. }
  125. geocoder.clear();
  126. var styleSpec = data.result;
  127. dragMarker.setLngLat(point).addTo(map);
  128. setCircleRadius(point);
  129. map.flyTo({
  130. center: point,
  131. zoom: 16,
  132. bearing: 0,
  133. speed: 1,
  134. curve: 1,
  135. essential: true
  136. });
  137. });
  138. });
  139. });
  140. });
  141. map.on('load', function() {
  142. geocoder.on('result', function(data) {
  143. $("#addSiteBtn").hide();
  144. $("#editSiteBtn").hide();
  145. $("div.mapboxgl-marker.mapboxgl-marker-anchor-center").remove();
  146. var point = data.result.center;
  147. var query = '{{URL::current()}}/radius/' + point[0] + '/' + point[1];
  148. $.ajax({
  149. method: 'GET',
  150. url: query,
  151. data: {
  152. "app_no": $('select#app_select').val(),
  153. "sims_no": $('select#sims_select').val(),
  154. "qrcode_id": $('select#qrcode_select').val()
  155. }
  156. }).done(function(data) {
  157. var is_null = 0;
  158. data.forEach(function(result) {
  159. if (result.site_id != null) {
  160. is_null++;
  161. var site_id = result.site_id;
  162. }else{
  163. var site_id = 'BELUM TERDAFTAR';
  164. }
  165. var marker = new mapboxgl.Marker({
  166. draggable: false,
  167. color: 'orange'
  168. })
  169. .setLngLat([result.sid_long, result.sid_lat])
  170. .setPopup(new mapboxgl.Popup({ offset: 25 })
  171. .setHTML('<img style="width: 70px;height: 60px;" src="http://localhost/ISR/public/sdppi.png" alt=""><br><div style="text-align: left;"><table class="table"><tbody><tr><td style="font-weight: bold">SITE ID</td><td>:</td><td>'+ site_id +'</td></tr><tr><td style="font-weight: bold">CLIENT ID</td><td>:</td><td>'+ result.clnt_id +'</td></tr><tr><td style="font-weight: bold">CLIENT NAME</td><td>:</td><td>'+ result.clnt_name +'</td></tr><tr><td style="font-weight: bold">CITY</td><td>:</td><td>'+ result.city +'</td></tr></tbody></table></div>'))
  172. .addTo(map);
  173. });
  174. geocoder.clear();
  175. var styleSpec = data.result;
  176. dragMarker.setLngLat(point).addTo(map);
  177. setCircleRadius(point);
  178. if (data.length >= 1) {
  179. if (is_null >= 1) {
  180. $("#editSiteBtn").show();
  181. $("#editPayload").val(JSON.stringify(data));
  182. }
  183. else {
  184. $("#addSiteBtn").show();
  185. $("#createPayload").val(JSON.stringify(data));
  186. $("#createLongLat").val(JSON.stringify(dragMarker.getLngLat()));
  187. }
  188. }
  189. })
  190. });
  191. });
  192. $("select#app_select").select2({
  193. theme: 'bootstrap4',
  194. allowClear: true,
  195. ajax: {
  196. url: '{{ url()->full() }}',
  197. data: function (params) {
  198. var query = {
  199. search: params.term,
  200. client_id: true
  201. }
  202. return query;
  203. }
  204. }
  205. });
  206. $("select#sims_select").select2({
  207. theme: 'bootstrap4',
  208. allowClear: true,
  209. ajax: {
  210. url: '{{ url()->full() }}',
  211. data: function (params) {
  212. var query = {
  213. search: params.term,
  214. client_name: true
  215. }
  216. return query;
  217. }
  218. }
  219. });
  220. $("select#qrcode_select").select2({
  221. theme: 'bootstrap4',
  222. allowClear: true,
  223. ajax: {
  224. url: '{{ url()->full() }}',
  225. data: function (params) {
  226. var query = {
  227. search: params.term,
  228. site_id: true
  229. }
  230. return query;
  231. }
  232. }
  233. });
  234. </script>