leaflet-map-widget.js 1.7 KB

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