123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- var geocoder;
- $(document).ready(function () {
- geocoder = new google.maps.Geocoder();
- map.addControl(new L.Control.Search({
- sourceData: googleGeocoding,
- formatData: formatJSON,
- markerLocation: true,
- autoType: false,
- autoCollapse: true,
- minLength: 2,
- position: 'topright'
- }));
- $('.search-button').on('click', function () {
- if (loc) {
- drawMarker();
- setDataValue();
- }
- });
- $('.search-input').on('keypress', function (e) {
- if (e.keyCode == 13 && loc) {
- e.preventDefault();
- e.stopPropagation();
- drawMarker();
- setDataValue();
- }
- });
- map.on('zoomend', function () {
- setDataValue();
- });
- map.on('click', function (e) {
- loc = new L.latLng(e.latlng);
- drawMarker();
- setDataValue();
- });
- });
- function setDataValue()
- {
- var jsonParseData = {};
- var dataValue = $('[name$="[data]"]').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$="[data]"]').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;
- }
|