$(document).ready(function(){ $('.header_item').mouseenter(function (event) { $(this).children('.title_popp').addClass('show').text($(this).data('title')); }); $('.header_item').mouseleave(function (event) { $(this).children('.title_popp').removeClass('show'); }); $('.open_poppup').on('click', function (event) { $(this).children('.inner_poppup').toggleClass('show'); }); $('.open_share_popup_js').on('click', function () { $('.inner_poppup').removeClass('show'); $('.share_popup').toggleClass('open_share_popup'); $('#share_url').val(window.location.href).select(); try { document.execCommand('copy'); //console.log('Copying text command was ' + msg); } catch (e) { } $('.social_item ').each(function () { var href = $(this).attr('href'); if($(this).hasClass('twitter_icon')){ $(this).attr('href', href + document.title + '+' + $('#share_url').val()); } else{ $(this).attr('href', href + $('#share_url').val()); } }); }); $('.open_sidebar_js').on('click', function (event) { $('body').addClass('sidebar_opened'); $('.left_sidebar_item').removeClass('show'); var block = $(this).data('block'); $('.'+ block).addClass('show'); closeAllMenus(); }); $('.close_button').click(function () { $(this).parent('.inner_poppup').removeClass('open_share_popup'); $('body').removeClass('sidebar_opened'); // if($(this).parent().hasClass('pmap_box')){ // } }); }); function show_popup(elem){ $(elem).toggleClass('add_priority'); $('.open_help_menu_js').not(elem).removeClass('add_priority').parent('div').removeClass('active'); $(elem).siblings('.inner_poppup').toggleClass('show').parent('div').toggleClass('active'); $('.inner_poppup').not($(elem).siblings('.inner_poppup')).removeClass('show'); } function checkClick(event, closestClass, hideElem, removedClass) { if ($(event.target).closest(closestClass).length === 0) { $(hideElem).removeClass(removedClass); } } $(document).on('contextmenu click', function (e) { checkClick(e, '.open_poppup, .fav_item, .personal_map_item', '.inner_poppup', 'show'); checkClick(e, '.open_fav_js, .fav_item, .mapPopup_favorites ', '.mapPopup_favorites', 'mapPopup_opened'); checkClick(e, '.personal_map_item', '.personal_map_item','active'); checkClick(e, '.open_help_menu_js ','.fav_item', 'active'); checkClickToAdd(e, '.geoSearchInput', '.searchResults', 'hide'); }); $(document).on('mousedown', function (e) { checkClick(e, '.open_share_popup_js, .share_popup ', '.share_popup', 'open_share_popup'); }); function checkClickToAdd(event, closestClass, showElem, addClass) { if ($(event.target).closest(closestClass).length === 0) { $(showElem).addClass(addClass); } } function showPos(){ $('#showPos_js').trigger('click'); } $ = jQuery; function closeAllMenus(){ $('#sideMenu').removeClass('sideMenu_opened'); $('#menu_shield').removeClass('menu_shield_opened'); } function loadCss(url) { var link = document.createElement("link"); link.type = "text/css"; link.rel = "stylesheet"; link.href = url; document.getElementsByTagName("head")[0].appendChild(link); } // функция проверяет, есть-ли в инпуте текст // если текст есть, то она отображает крестик "удалить результаты поиска" // если текста нет, то скрывает крестик function checkSearchInput(){ // console.log($('#geoSearchInput').length); // console.log($('#geoSearchInput').val().length >= 1); if($('#geoSearchInput').length > 0 && $('#geoSearchInput').val().length >= 1){ // console.log('1'); $('#searchGeoBox').addClass('searchGeoBox_typedText'); } else { // console.log('2'); $('#searchGeoBox').removeClass('searchGeoBox_typedText'); $('#geoSearchInput').removeClass('geoSearchInput_loader'); } } /** * Единый интерфейс для хранения массивов данных в Local Storage * * @param {string} bm_key - Ключ для хранения данных */ function StorageArray(bm_key) { /** * Получить массив элементов * @returns {Array} */ this.getElements = function() { var fromStorage = localStorage.getItem(bm_key); if(!fromStorage) { return new Array(); } try { var els_lines = JSON.parse(fromStorage); if(!$.isArray(els_lines)) { return new Array(); } return els_lines; } catch(e) { return new Array(); } }; /** * Удалить элемент из коллекции * @param {object} element */ this.removeElement = function(element) { var els_lines = this.getElements(); if(element !== undefined && els_lines.length > 0) { els_lines.splice(element, 1); localStorage.setItem(bm_key, JSON.stringify(els_lines)); } }; /** * Добавить элемент в коллекцию * @param {object} element */ this.addElement = function(element) { var current_els = this.getElements(); current_els.unshift(element); localStorage.setItem(bm_key, JSON.stringify(current_els)); }; /** * Удалить все элементы */ this.Clear = function() { localStorage.removeItem(bm_key); }; /** * Добавить массив элементов к существующей коллекции * @param {Array} parsed_import */ this.Import = function(parsed_import) { var current_els = this.getElements(); current_els = current_els.concat(parsed_import); localStorage.setItem(bm_key, JSON.stringify(current_els)); }; /** * Получить коллекцию элементов в виде текста * @returns {string} */ this.toString = function() { return localStorage.getItem(bm_key); }; }; var refreshMapList = function () { $.ajax({ url: '/personal-map/list', method: 'GET', success: function (response) { $('.pmap_box_container').html(''); response.forEach(function (item) { var template = _.template($('#personal_map_list_template').html()); var innerHtml = template({ 'title': item.title, 'number': item.id, 'url': item.url, 'icon': item.icon }); $('.pmap_box_container').append(innerHtml); }); $('.pmap_list_item_link').click(function(e) { window.location.href = $(this).data('url'); }); $('.pmap_remove_js').click(function () { var p_id = $(this).data('id'); $.ajax({ url: '/personal-map/remove', data: { 'id': p_id }, dataType: 'json', method: 'GET', success: function(response) { if(response.status) { $('#map_item'+p_id).remove(); } } }); }); } }); }; var mapSyncMode = true; $(function(){ $('.sync_map_btn').click(function(){ mapSyncMode = $(this).hasClass('sync_map_btn_off'); $(this).toggleClass('sync_map_btn_off'); return false; }); $('.streetHousnumbers_mask').click(function(){ $('.streetHousnumbers_list').addClass('streetHousnumbers_expanded'); return false; }); $(document).on('keyup', "#streets_index_search_attribute", function () { $( ".link_to_street_parent" ).removeClass('searchFound'); $( ".letters_boxes_list" ).addClass('letters_boxes_list_search'); $( ".link_to_street_parent[data-name*='"+$("#streets_index_search_attribute").val()+"']" ).addClass('searchFound'); if($("#streets_index_search_attribute").val() == ''){ $( ".link_to_street_parent" ).removeClass('searchFound'); $( ".letters_boxes_list" ).removeClass('letters_boxes_list_search'); } }); var $input = $("#streets_index_search"), $context = $(".link_to_street"); $input.on("input", function() { var term = $(this).val(); $('.searchFound').removeClass('searchFound'); if(term) { $('.expand_box_letter_link').hide(); var parts = term.trim().split(' '); var reg = new RegExp('('+parts.join('|')+')', "gi"); $context.each(function () { var matches = $(this).text().match(reg); var found = matches ? matches.length >= parts.length : false; if(found) { $(this).parent().addClass('searchFound'); $(this).parent().show(); } else { $(this).parent().hide(); } }); var foundLists = $('.streets_list').has('.searchFound'); foundLists.parent().show(); $('.streets_list').not(foundLists).parent().hide(); } else { $('.streets_list').parent().show(); $('.expand_box_letter_link').show(); $context.parent().show(); } }); $("#housenumber_index_search").on("input", function() { var term = $(this).val(); if(term) { var reg = new RegExp(term.trim(), "gi"); $('.housnumber_link').each(function () { var matches = $(this).text().match(reg); if(matches) { $(this).show(); } else { $(this).hide(); } }); $('.streetHousnumbers_list').addClass('streetHousnumbers_search'); } else { $('.housnumber_link').show(); $('.streetHousnumbers_list').removeClass('streetHousnumbers_search'); } }); // $context = $(".link_to_street"); // $input.on("input", function() { // var term = $(this).val(); // $context.parent().show(); // // $context.parents('.str_letter_box').show(); // $context.unmark(); // if (term) { // $context.mark(term, { // done: function() { // $context.not(":has(mark)").parent().hide(); // // $context.parents('.str_letter_box').hide(); // } // }); // } // }); // https://jsfiddle.net/petrovnn/3Lyqco7k/9/ // $( "a:contains('шоссе Корытовское ')" ).addClass('searchFound'); $('.showempty_streets_link').click(function(){ $('.letters_boxes_list').toggleClass('show_empty_streets'); return false; }); // развернуть все блоки с улицами (показать все улицы) $('.letters_expandall_link').click(function(){ $('.letters_collapse_link').removeClass('btn_hidden'); $(this).addClass('btn_hidden'); $('.str_letter_box').addClass('str_letter_expanded'); return false; }); // свернуть все блоки с улицами (скрыть все улицы) $('.letters_collapse_link').click(function(){ $('.letters_expandall_link').removeClass('btn_hidden'); $(this).addClass('btn_hidden'); $('.str_letter_box').removeClass('str_letter_expanded'); return false; }); $('.letter_box_close').click(function(){ $(this).parent().removeClass('str_letter_expanded'); return false; }); $('.expand_box_letter_link').click(function(){ $(this).parent().addClass('str_letter_expanded'); return false; }); // сохраняем дату редактирования термина таксономии $('#edit-field-date-und-0-value-date').val($('#edit-field-date-und-0-value .description').text().replace(' Формат: ','')); $("#dropMarker_link").on("focus",function(e){ $(this).select(); }); $("#dropMarker_link").on("mouseup",function(e){ return false; }); $('.copy_latlon_js').mousedown(function(){ $(this).addClass('sideMenuLink_active'); $('#copy_latlon_input').select(); try { var successful = document.execCommand('copy'); } catch(e) {} $('#copy_latlon_input').blur(); setTimeout(function() { $(this).removeClass('sideMenuLink_active'); }, 1000); }); $('.copy_dms_js').mousedown(function(){ $(this).addClass('sideMenuLink_active'); $('#copy_dms_input').select(); try { var successful = document.execCommand('copy'); } catch(e) {} $('#copy_dms_input').blur(); setTimeout(function() { $(this).removeClass('sideMenuLink_active'); }, 1000); }); // центр карты $('.intersects_js').click(function(){ if($(this).is(':checked')){ $(this).parent('.center_map').addClass('active'); $('.intersects').addClass('intersects_visible'); } else { $(this).parent('.center_map').removeClass('active'); $('.intersects').removeClass('intersects_visible'); } }); // скопировать ссылку $('#android_copyLink').click(function(){ $('#current_url').val(window.location.href).select(); try { document.execCommand('copy'); //console.log('Copying text command was ' + msg); } catch (err) { //console.log('Oops, unable to copy'); } $('#current_url').blur(); return false; }); if(typeof Android != 'undefined' || typeof MapViewer != 'undefined') { $('#sideMenu').addClass('sideMenu_android'); // экран всегда включен $('#hold_display').change(function(){ if($(this).is(':checked')){ Android.bm_holdDisplay(true); } else{ Android.bm_holdDisplay(false); } }); $('.dots_js').click(function(){ Android.showOptionsMenu(); }); $('#android_copyLink').click(function(){ Android.bm_message('УРЛ скопирован'); }); // выход из программы $('#android_exit').click(function(){ Android.bm_exit(); }); } $('.mapInputImport_js').keyup(function(){ var addr = jQuery('.mapInputImport_js').val(); // openstreetmap if(addr.indexOf("openstreetmap") > -1){ //http://www.openstreetmap.org/#map=14/44.2828/6.5169 //http://www.openstreetmap.org/?mlat=44.28278&mlon=6.51694&zoom=14#map=14/44.2828/6.5169 // если в адресе есть mlat (маркер) - берем данные из маркера if(addr.indexOf("mlat") > -1){ // разбиваем урл на две части вопросом var addr_two = addr.split('?'); var addr_two_2 = addr_two[1].split('#'); var addr_two_3 = addr_two_2[0].split('&'); if(addr_two_3 != undefined){ lat = addr_two_3[0].substring(5,15); lon = addr_two_3[1].substring(5,15); zoom = addr_two_3[2].substring(5,10); console.log(lat+' | '+ lon); map.panTo(new google.maps.LatLng(lat, lon )); map.setZoom(parseInt(zoom)); } // если нет маркера, берем координаты из стандартной строки OSM } else { // разбиваем урл на две части решеткой var addr_two = addr.split('#'); } // разбиваем правую часть на две части до решетки и после var addr_array = addr_two[1].split('&'); // разбиваем var zoom_level = ''; for (var j=0; jw){ openFavs('vertical'); } else { openFavs('horizontal'); } } // нажатие на иконку избранного if (typeof ga !== "undefined") { ga('send', { // ico favs hitType: 'event', eventCategory: 'Favorites', eventAction: window.location.href.replace('https://bes.gorndyussh.ru/', ''), eventLabel: 'Click favorites' }); } closeAllMenus(); $(this).blur(); return false; }); // показать мою текущую позицию $('#showPos_js').click(function() { if (typeof ga !== "undefined") { url = window.location.href.replace('https://bes.gorndyussh.ru/', ''); if(url.indexOf("/s/") != -1){ url = url.split('/s/')[0]+/s/+decodeURI(url.split('/s/')[1]); } ga('send', { // position hitType: 'event', eventCategory: 'geolocation', eventAction: url, eventLabel: url }); } }); function rebuild_frames(vthis, mode){ var provs = vthis.attr('data-provs'); // строка с провайдерами (со всеми) разделенные запятыми var pos = vthis.attr('data-provnum'); // номер окна, из которого был инициирован вызов var urlcoord = vthis.attr('data-urlcoord'); // координаты var provs_arr = provs.split(','); // добавляемые провайдеры var provs_new = vthis.attr('data-provs-new'); if (typeof variable === 'undefined') {} else { var provs_new_arr = provs_new.split(','); } if(mode == 'change'){ provs_arr[pos] = vthis.val(); // заменяем элемент массива } if(mode == 'remove'){ provs_arr.splice(pos, 1); // удаляем элемент } if(mode == 'add'){ var provs_arr = provs_arr.concat(provs_new_arr); } if(mode == 'expand_current'){ var provs_arr = provs_arr[pos]; } if (typeof provs_arr == 'string' || provs_arr instanceof String) { window.location = '/map?k='+ provs_arr + urlcoord; } else { window.location = '/map?k='+ provs_arr.join(",") + urlcoord; } } $('.popupClose').click(function(){ $(this).parents('.popup').removeClass('popupOpen'); $(this).parents('#block-formblock-shortcut').removeClass('popupOpen'); }); // Делаем подписи под фотками в контенте var alt, alt2; $('.taxonomy_term_descriptionP img').each(function (){ alt = $(this).attr('alt'); if(alt.search('фото')){ alt2 = 'фото: '+alt; } else { alt2 = 'фото: '+alt; } if(alt.length > 0){ $(this).parent().after(''+alt+''); } }); // Получаем url статического изображения для заданной области var getStaticImgUrl = function(lat, lon, zoom, provider, mapType) { var img_url, var_thumb_type, w = 140, h = 100, google_apikey = 'AIzaSyAiztBu2QVlFduTWhqigDoqT_0Y1ZAhRG0'; // новый гугл апи ключ (пока только для static maps) var sat_types = ['aerial','satellite','hybrid']; zoom = zoom-3; if(sat_types.indexOf(mapType) > -1) { var_thumb_type = 'satellite'; //img_url = 'http://maps.google.com/maps/api/staticmap?center='+lat+','+lon+'&size=140x100&zoom='+zoom+'&maptype='+var_thumb_type+'&hl=ru&format=jpg&sensor=false&key=ABQIAAAAjU0EJWnWPMv7oQ-jjS7dYxQGj0PqsCtxKvarsoS-iqLdqZSKfxRdmoPmGl7Y9335WLC36wIGYa6o5Q'; // ключ от Static Maps старый - работал еще весной 2016, теперь не работает //img_url = 'http://maps.google.com/maps/api/staticmap?center='+lat+','+lon+'&size=140x100&zoom='+zoom+'&maptype='+var_thumb_type+'&hl=ru&format=jpg&sensor=false&key=ABQIAAAAjU0EJWnWPMv7oQ-jjS7dYxQ82LsCgTSsdpNEnBsExtoeJv4cdBSUkiLH6ntmAr_5O4EfjDwOa0oZBQ'; // ключ от Google maps старый - не работает if(provider == 'yandex'){ img_url = '//static-maps.yandex.ru/1.x/?ll='+lon+','+lat+'&size='+w+','+h+'&z='+zoom+'&l=sat'; } else { // static maps error: signature // img_url = '//maps.google.com/maps/api/staticmap?center='+lat+','+lon+'&size='+w+'x'+h+'&zoom='+zoom+'&maptype='+var_thumb_type+'&hl=ru&format=jpg&sensor=false&key='+google_apikey; } } else { var_thumb_type = 'map'; if(provider == 'yandex'){ img_url = '//static-maps.yandex.ru/1.x/?ll='+lon+','+lat+'&size='+w+','+h+'&z='+zoom+'&l=map'; }else if(provider == 'google'){ // static maps error: signature // img_url = '//maps.google.com/maps/api/staticmap?center='+lat+','+lon+'&size='+w+'x'+h+'&zoom='+zoom+'&maptype=map&hl=ru&format=jpg&sensor=false&key='+google_apikey; }else if(provider == 'kosmo' && mapType == '2GIS'){ img_url = 'http://static.maps.2gis.com/1.0?center='+lon+','+lat+'&zoom='+zoom+'&size='+w+','+h+''; }else { // http://wiki.openstreetmap.org/wiki/Static_map_images#Comparison_Matrix img_url = 'https://staticmap.openstreetmap.de/staticmap.php?center='+lat+','+lon+'&zoom='+zoom+'&size='+w+'x'+h+''; //img_url = '/ajax/static-map?lat='+lat+'&lon='+lon+'&zoom='+zoom+'&w='+w+'&h='+h; } //http://image.maps.cit.api.here.com/mia/1.6/mapview?app_id=d8nhymlXGipwYRR3ZOwm&app_code= } return img_url; }; var favoritesStorage = new StorageArray('bm_favorites'); // Избранное function rebuildFavLinks(task, element) { $('#favBox').html(''); var favs_html = ''; // удаляем один элемент if(task == 'del_element') { favoritesStorage.removeElement(element); } var favs_lines = favoritesStorage.getElements(); if(favs_lines.length ' + line.provider + ' ' + line.layer + ''; } favs_html += '

' + '
\n' + ' Поделиться\n' + ' Редактировать\n' + ' Создать копию\n' + '
\n' + ' Удалить\n' + '
' + ''+mainTitle+'
'; }); $('#favBox').html(favs_html); if(typeof mapsCollection === "undefined") { return false; } var current_lat, current_lon, current_zoom; // превью $('.fav_item_link').hover(function(){ if(typeof mapsCollection === "undefined" || !mapsCollection.length) { return false; } var mapModel = mapsCollection.at(0); current_lat = mapModel.get('lat'); current_lon = mapModel.get('lon'); current_zoom = mapModel.get('zoom'); var favIndex = $(this).attr('data-favIndex'); mapModel.set('lat', favs_lines[favIndex].lat); mapModel.set('lon', favs_lines[favIndex].lon); mapModel.set('zoom', favs_lines[favIndex].zoom); },function(){ if(typeof mapsCollection === "undefined" || !mapsCollection.length) { return false; } var mapModel = mapsCollection.at(0); mapModel.set({ 'lat': current_lat, 'lon': current_lon, 'zoom': current_zoom }); }); // удалить одну локацию $('.fav_item_del').click(function() { rebuildFavLinks('del_element', parseInt($(this).attr('data-favIndex'))); return false; }); } rebuildFavLinks('load'); var placeNameFromNominatim = function(reverseGeocoding) { var place_name = ''; if(reverseGeocoding.address.state) { place_name += reverseGeocoding.address.state + ' '; } if(reverseGeocoding.address.city) { place_name += reverseGeocoding.address.city + ' '; } if(reverseGeocoding.address.town) { place_name += reverseGeocoding.address.town + ' '; } if(reverseGeocoding.address.village) { place_name += reverseGeocoding.address.village + ' '; } if(reverseGeocoding.address.road) { place_name += reverseGeocoding.address.road + ' '; } return place_name; }; var addFavoritesStat = function(addingFav) { var place_name = addingFav.place ? addingFav.place : ''; $.ajax({ url: '/ajax/favorites-save', data: { 'map_data': place_name, 'map_type': addingFav.provider+'/'+addingFav.layer+'/'+addingFav.zoom+'/'+addingFav.lat+'/'+addingFav.lon }, method: 'GET' }); }; var addFavorites = function(addingFav) { favoritesStorage.addElement(addingFav); rebuildFavLinks('add'); addFavoritesStat(addingFav); }; // добавить локацию $('#favorites_add_js').click(function(){ $('.mapPopupP').animate({ scrollTop: 0 }, 300); if(typeof mapsCollection === "undefined" || !mapsCollection.length) { return false; } var mapModel = mapsCollection.at(0); var fav_url = 'map' + mapModel.getPartialUrl() + '/' + mapModel.getUrl(); var addingFav = { url: fav_url, lat: mapModel.get('lat'), lon: mapModel.get('lon'), zoom: mapModel.get('zoom'), provider: mapModel.getProvider(), layer: mapModel.get('mapType') }; $.ajax({ type: 'GET', dataType: 'json', url: '//nominatim.openstreetmap.org/reverse', data: { format: 'json', lat: mapModel.get('lat'), lon: mapModel.get('lon'), zoom: mapModel.get('zoom'), addressdetails: 1 }, success: function(reverseGeocoding) { addingFav.place = placeNameFromNominatim(reverseGeocoding); addFavorites(addingFav); }, error: function(data) { addFavorites(addingFav); } }); return false; }); $('#favorites_more_js').click(function(){ $('.favorites_more_box').toggleClass('favorites_more_box_hidden '); var mapPopupP = $('.mapPopupP'); mapPopupP.animate({ scrollTop: mapPopupP.get(0).scrollHeight }, 300); return false; }); // удалить все локации $('#favorites_remove').click(function() { favoritesStorage.Clear(); rebuildFavLinks('del_all'); return false; }); // бэкап локаций $('#favorites_export').click(function() { var backup_string = favoritesStorage.toString(); $('#favs_export_textarea').val(backup_string).addClass('favs_export_textareaActive'); return false; }); // импорт мест в виде текста $('#favorites_import').click(function() { var import_text = $('#favs_import_textarea').val(); try { var parsed_import = JSON.parse(import_text); favoritesStorage.Import(parsed_import); rebuildFavLinks('import'); } catch(e) { $('#favs_export_textarea').text('Некорректные данные!'); } return false; }); /* ======================= ПОИСК =================================*/ /* ======================= ПОИСК =================================*/ /* ======================= ПОИСК =================================*/ // записываем город пользователя (определенный по IP) в куки // чтобы не отправлять запрос при каждом заходе пользователя // с мобильного оператора определяется не правильно var ip_city = ''; var ip_region = ''; var ip_coord_lat = ''; var ip_coord_lon = ''; /* if($.cookie('bm_ip_city')){ ip_city = $.cookie('bm_ip_city'); ip_region = $.cookie('bm_ip_region'); ip_coord_lat = $.cookie('bm_ip_coord_lat'); ip_coord_lon = $.cookie('bm_ip_coord_lon'); } */ /*==========SEARCH API==========*/ var nominatimSearchApiQuery = function(searchStr, itemCallback) { // The preferred area to find search results if(typeof mapsCollection !== "undefined") { var bbox = mapsCollection.at(0).get('bbox'); bboxArr = bbox.split(','); //console.log(bbox); /* console.log(bboxArr[3]); // lat top // tlat console.log(bboxArr[0]); // lon left // tlon console.log(bboxArr[1]); // lat bottom // blat console.log(bboxArr[2]); // lon right // blon */ var tlat = bboxArr[3]; // lat top // tlat var tlon = bboxArr[0]; // lon left // tlon var blat = bboxArr[1]; // lat bottom // blat var blon = bboxArr[2]; // lon right // blon var bbox_sputnik = '&blat='+blat+'&blon='+blon+'&tlat='+tlat+'&tlon='+tlon; } else { var bbox_sputnik = ''; } var SputnikSearchUrl = '//maps-search.apissputnik.ru/search/addr?q='+searchStr+bbox_sputnik; $.ajax({ url: SputnikSearchUrl, data: { format: 'json', apikey: '17LdU1H3IuVJ' //addr_limit: 4 // }, dataType: 'json', success: function(data) { // Если строка поиска изменилась, результаты старого запроса не добавляем if(searchStr !== $('#geoSearchInput').val()) { return; } if(data.result.hasOwnProperty("address")){ // первая половина списка результатов запроса data.result.address[0].features.forEach(itemCallback); // вторая половина списка результатов запроса if(data.result.address[1] && data.result.address[1].features) { data.result.address[1].features.forEach(itemCallback); } } else { // fixme // если API вернуло пустой результат // нужно написать "ничего не найдено, попробуйте изменить текст запроса" } $('#geoSearchInput').removeClass('geoSearchInput_loader'); } }); }; var bestmapsSearchApiQuery = function(searchStr, itemCallback) { $.ajax({ type: 'GET', data: { name: searchStr }, dataType: 'json', url: '/ajax/search', success: function(searchList) { if(!searchList || searchList.length = 0) MoveFocus(postion); else $('.geoSearchInput').focus(); } // Enter if(k === 13 ){ var href = $(links[postion]).attr('href'); if(href) { window.location = href; } else if(links.length) { window.location = $(links[0]).attr('href'); } } // ESC (?) if(k === 27){ $('.searchResults').addClass('hide'); postion = -1; } function MoveFocus(val) { $(links[val]).focus(); } return false; } // набор букв в текстовом поле checkSearchInput(); // если длина введенной строки больше 2х символов (3 и более) - ищем if(name.length ', { class: 'sLinkCapton', text: place+ item.properties.address_components[1].value+', '+ item.properties.address_components[0].value }); var sLink = $('', { class: 'srLink searchOsmResult ', href: linkHref,//'#', text: item.properties.title }).append(sLinkCapton); sLink.click(function(e) { /* // клик по результату поиска if (typeof ga !== "undefined") { ga('send', { hitType: 'event', eventCategory: 'S click', eventAction: sLink[0].text, eventLabel: 'Click search result' }); } if (typeof router !== 'undefined') { var popup = $('#searchGeoBox'); popup.addClass('searchResultsHidden'); router.navigateToPlace(item, name); } else { window.location.href = linkHref; } */ }); $('
', { class: 'res' }) //.html(sLinkCapton) .append(sLink) .appendTo('#searchResults_osm'); }); }; searchMainProcessor(); // набор в строке поиска // if (typeof ga !== "undefined") { // ga('send', { // search type // hitType: 'event', // eventCategory: 'st '+window.location.href.replace('https://bes.gorndyussh.ru/', ''), // eventAction: name, // eventLabel: window.location.href // }); // } }, 700 ); //timeout, delay }); }); $.fn.appendAttr = function(attrName, suffix) { this.attr(attrName, function(i, val) { return val + suffix; }); return this; }; /*! * jQuery Cookie Plugin v1.4.1 * https://github.com/carhartl/jquery-cookie * * Copyright 2006, 2014 Klaus Hartl * Released under the MIT license */ (function (factory) { if (typeof define === 'function' && define.amd) { // AMD (Register as an anonymous module) define(['jquery'], factory); } else if (typeof exports === 'object') { // Node/CommonJS module.exports = factory(require('jquery')); } else { // Browser globals factory(jQuery); } }(function ($) { var pluses = /\+/g; function encode(s) { return config.raw ? s : encodeURIComponent(s); } function decode(s) { return config.raw ? s : decodeURIComponent(s); } function stringifyCookieValue(value) { return encode(config.json ? JSON.stringify(value) : String(value)); } function parseCookieValue(s) { if (s.indexOf('"') === 0) { // This is a quoted cookie as according to RFC2068, unescape... s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\'); } try { // Replace server-side written pluses with spaces. // If we can't decode the cookie, ignore it, it's unusable. // If we can't parse the cookie, ignore it, it's unusable. s = decodeURIComponent(s.replace(pluses, ' ')); return config.json ? JSON.parse(s) : s; } catch(e) {} } function read(s, converter) { var value = config.raw ? s : parseCookieValue(s); return $.isFunction(converter) ? converter(value) : value; } var config = $.cookie = function (key, value, options) { // Write if (arguments.length > 1 && !$.isFunction(value)) { options = $.extend({}, config.defaults, options); if (typeof options.expires === 'number') { var days = options.expires, t = options.expires = new Date(); t.setMilliseconds(t.getMilliseconds() + days * 864e+5); } return (document.cookie = [ encode(key), '=', stringifyCookieValue(value), options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE options.path ? '; path=' + options.path : '', options.domain ? '; domain=' + options.domain : '', options.secure ? '; secure' : '' ].join('')); } // Read var result = key ? undefined : {}, // To prevent the for loop in the first place assign an empty array // in case there are no cookies at all. Also prevents odd result when // calling $.cookie(). cookies = document.cookie ? document.cookie.split('; ') : [], i = 0, l = cookies.length; for (; i

Yubileynaya-ulitsa Расстояние Якутск Белая Гора на машине составляет – 2317 км Ulitsa-olega-antonova Sobolevskaya-doroga сексуальный