leaflet-map-widget.js 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. var geocoder;
  2. $(document).ready(function () {
  3. placeholder = 'Buscar...';
  4. geocoder = new google.maps.Geocoder();
  5. map.addControl(new L.Control.Search({
  6. sourceData: googleGeocoding,
  7. formatData: formatJSON,
  8. markerLocation: true,
  9. autoType: true,
  10. autoCollapse: false,
  11. minLength: 3,
  12. position: 'topright',
  13. delayType: 1,
  14. tooltipLimit: -1,
  15. firstTipSubmit: true,
  16. autoResize: false,
  17. collapsed: false,
  18. textPlaceholder: placeholder
  19. }));
  20. map.on('zoomend', function () {
  21. setDataValue();
  22. });
  23. $('.search-button').on('click', function () {
  24. if (loc && $('.search-input').val() !== placeholder) {
  25. drawMarker();
  26. setDataValue();
  27. }
  28. });
  29. $('.search-input').on('keypress', function (e) {
  30. if (e.keyCode == 13 && loc) {
  31. e.preventDefault();
  32. e.stopPropagation();
  33. drawMarker();
  34. setDataValue();
  35. }
  36. });
  37. $('.search-tooltip').on('click', function() {
  38. var tooltip = $(this).children('.search-tip');
  39. var location = '';
  40. if (tooltip) {
  41. location = tooltip.html();
  42. }
  43. if (location !== '') {
  44. $('.search-input').val(location);
  45. $('.search-tooltip').css('display', 'none');
  46. $('.search-button').trigger('click');
  47. }
  48. });
  49. });
  50. function setDataValue()
  51. {
  52. var jsonParseData = {};
  53. var dataValue = $('[name$="[extraData]"]').val();
  54. if (dataValue) {
  55. jsonParseData = JSON.parse(dataValue);
  56. }
  57. jsonParseData.lat = marker._latlng.lat;
  58. jsonParseData.lng = marker._latlng.lng;
  59. jsonParseData.zoom = map.getZoom();
  60. var stringifyData = JSON.stringify(jsonParseData);
  61. $('[name$="[extraData]"]').val(stringifyData);
  62. $('[name$="[map]"]').val(stringifyData);
  63. }
  64. function googleGeocoding(text, callResponse)
  65. {
  66. geocoder.geocode({address: text}, callResponse);
  67. }
  68. function formatJSON(rawjson)
  69. {
  70. var json = {},
  71. key;
  72. for (var i in rawjson) {
  73. key = rawjson[i].formatted_address;
  74. loc = new L.latLng(rawjson[i].geometry.location.lat(), rawjson[i].geometry.location.lng());
  75. json[key] = loc;
  76. }
  77. return json;
  78. }