form.js 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. $( document ).ready(function() {
  2. // Defaults
  3. defaults = {
  4. lat: ($('#latitude').val()) ? $('#latitude').val() : 47.218371,
  5. lng: ($('#longitude').val()) ? $('#longitude').val() : -1.553621,
  6. zoom: 13,
  7. }
  8. // Create map
  9. var map = L.map('map', {scrollWheelZoom: false}).setView([defaults.lat,defaults.lng], defaults.zoom);
  10. L.tileLayer('http://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png', {
  11. attribution: 'Map data &copy; <a href="http://openstreetmap.org">OpenStreetMap</a> contributors, <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Imagery © <a href="http://mapbox.com">Mapbox</a>',
  12. maxZoom: 18
  13. }).addTo(map);
  14. // Create marker
  15. var marker = L.marker([defaults.lat,defaults.lng], {
  16. draggable: true
  17. }).addTo(map);
  18. // every time the marker is dragged, update the coordinates container
  19. marker.on('dragend', mapUpdateCoords);
  20. // Set the initial marker coordinate on load.
  21. mapUpdateCoords();
  22. function mapUpdateCoords() {
  23. var m = marker.getLatLng();
  24. $('#latitude').val(m.lat);
  25. $('#longitude').val(m.lng);
  26. }
  27. // Search sub form
  28. $('#search-btn').click(function(e){
  29. e.preventDefault();
  30. var btn = $(this).button('loading');
  31. // Geocoding
  32. var searchString = $('#search').val();
  33. $.getJSON('http://nominatim.openstreetmap.org/search?limit=5&format=json&q='+searchString, function(data){
  34. var items = [];
  35. $.each(data, function(key, val) {
  36. items.push(
  37. "<li class='list-group-item'><a href='#' data-lat='"+val.lat+"' data-lng='"+val.lon+"'>" + val.display_name + '</a></li>'
  38. );
  39. });
  40. $('#modal .modal-body').empty();
  41. if (items.length != 0) {
  42. $('<ul/>').addClass("list-group").html(items.join('')).appendTo('#modal .modal-body');
  43. } else {
  44. $('<p/>', { html: "Aucun résultat" }).appendTo('#modal .modal-body');
  45. }
  46. $('#modal').modal('show');
  47. // Bind click on results and update coordinates
  48. $('#modal .modal-body a').on('click', function(e){
  49. e.preventDefault();
  50. marker.setLatLng({lat:$(this).data('lat'), lng:$(this).data('lng')}).update();
  51. map.panTo({lat:$(this).data('lat'), lng:$(this).data('lng')});
  52. mapUpdateCoords();
  53. $('#modal').modal('hide');
  54. });
  55. btn.button('reset');
  56. }); // getJSON
  57. }); // Search sub form
  58. // Enter key on search form does not submit form,
  59. // Trigger search button instead.
  60. $('#search').keypress(function(e) {
  61. if (e.which == '13') {
  62. e.preventDefault();
  63. $('#search-btn').trigger('click');
  64. }
  65. });
  66. // Contrib share dynamic form
  67. if ($('[name="contrib-type"]:checked').val() == 'share') { $('#contrib-type-share').show(); }
  68. else { $('#contrib-type-share').hide(); }
  69. // On change
  70. $('[name="contrib-type"]').change(function(e){
  71. if ($(this).val() == 'share') { $('#contrib-type-share').slideDown(); }
  72. else { $('#contrib-type-share').slideUp(); }
  73. });
  74. // select/deselect all checkbox
  75. $('#orientation-all').change(function(e){
  76. $('input[name="orientation"]').prop('checked', $(e.target).is(':checked') );
  77. });
  78. });