var geocoder; $(document).ready(function () { placeholder = 'Buscar...'; geocoder = new google.maps.Geocoder(); map.addControl(new L.Control.Search({ sourceData: googleGeocoding, formatData: formatJSON, markerLocation: true, autoType: true, autoCollapse: false, minLength: 3, position: 'topright', delayType: 1, tooltipLimit: -1, firstTipSubmit: true, autoResize: false, collapsed: false, textPlaceholder: placeholder })); map.on('zoomend', function () { setDataValue(); }); $('.search-button').on('click', function () { if (loc && $('.search-input').val() !== placeholder) { drawMarker(); setDataValue(); } }); $('.search-input').on('keypress', function (e) { if (e.keyCode == 13 && loc) { e.preventDefault(); e.stopPropagation(); drawMarker(); setDataValue(); } }); $('.search-tooltip').on('click', function() { var tooltip = $(this).children('.search-tip'); var location = ''; if (tooltip) { location = tooltip.html(); } if (location !== '') { $('.search-input').val(location); $('.search-tooltip').css('display', 'none'); $('.search-button').trigger('click'); } }); }); function setDataValue() { var jsonParseData = {}; var dataValue = $('[name$="[extraData]"]').val(); if (dataValue) { jsonParseData = JSON.parse(dataValue); } jsonParseData.lat = marker._latlng.lat; jsonParseData.lng = marker._latlng.lng; jsonParseData.zoom = map.getZoom(); var stringifyData = JSON.stringify(jsonParseData); $('[name$="[extraData]"]').val(stringifyData); $('[name$="[map]"]').val(stringifyData); } function googleGeocoding(text, callResponse) { geocoder.geocode({address: text}, callResponse); } function formatJSON(rawjson) { var json = {}, key; for (var i in rawjson) { key = rawjson[i].formatted_address; loc = new L.latLng(rawjson[i].geometry.location.lat(), rawjson[i].geometry.location.lng()); json[key] = loc; } return json; }