leaflet-map-widget.js 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  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. $('.search-button').on('click', function () {
  21. if (loc && $('.search-input').val() !== placeholder) {
  22. drawMarker();
  23. setDataValue();
  24. }
  25. });
  26. $('.search-input').on('keypress', function (e) {
  27. if (e.keyCode == 13 && loc) {
  28. e.preventDefault();
  29. e.stopPropagation();
  30. drawMarker();
  31. setDataValue();
  32. }
  33. });
  34. $('.search-tooltip').on('click', function () {
  35. var tooltip = $(this).children('.search-tip');
  36. var location = '';
  37. if (tooltip) {
  38. location = tooltip.html();
  39. }
  40. if (location !== '') {
  41. $('.search-input').val(location);
  42. $('.search-tooltip').css('display', 'none');
  43. $('.search-button').trigger('click');
  44. }
  45. });
  46. });
  47. function setDataValue()
  48. {
  49. var jsonParseData = {};
  50. var dataValue = $('[name$="[extraData]"]').val();
  51. if (dataValue) {
  52. jsonParseData = JSON.parse(dataValue);
  53. }
  54. jsonParseData.lat = marker._latlng.lat;
  55. jsonParseData.lng = marker._latlng.lng;
  56. jsonParseData.zoom = map.getZoom();
  57. var stringifyData = JSON.stringify(jsonParseData);
  58. $('[name$="[extraData]"]').val(stringifyData);
  59. $('[name$="[map]"]').val(stringifyData);
  60. }
  61. function googleGeocoding(text, callResponse)
  62. {
  63. geocoder.geocode({address: text}, callResponse);
  64. }
  65. function formatJSON(rawjson)
  66. {
  67. var json = {},
  68. key;
  69. for (var i in rawjson) {
  70. key = rawjson[i].formatted_address;
  71. loc = new L.latLng(rawjson[i].geometry.location.lat(), rawjson[i].geometry.location.lng());
  72. json[key] = loc;
  73. }
  74. return json;
  75. }