1 2function rendering_sticker_marker_ya(list, map, markers, skip_sticker_id) { 3 4 for (var y in list) { 5 var p = list[y]; 6 var key = p.lat_avg + '|' + p.lng_avg + '|' + p.count_stickers; 7 //непоказÑÐ²Ð°Ñ Ð² маÑкеÑÐ°Ñ ÑекÑÑий ваÑÐ¸Ð°Ð½Ñ 8 9 if (p.count_stickers == 1 && skip_sticker_id == p.sticker_ids) { 10 continue; 11 } else if (p.count_stickers > 1 && p.sticker_ids.split(',').indexOf('' + skip_sticker_id) >= 0) { 12 13 var index = p.sticker_ids.split(',').indexOf('' + skip_sticker_id), 14 sticker_ids_tmp = [], sticker_ids = p.sticker_ids.split(','); 15 16 for (y in sticker_ids) { 17 if (y == index) { 18 continue 19 } 20 sticker_ids_tmp.push(sticker_ids[y]); 21 } 22 p.sticker_ids = sticker_ids_tmp.join(','); 23 p.count_stickers = p.count_stickers - 1; 24 25 } 26 27 28 29 30 var addon_class = 'placemark_layout_container', 31 bit = ('' + p.count_stickers).length, 32 d = 30 + bit * 5, 33 cluster = true; 34 if (p.lat_max == p.lat_min && p.lng_max == p.lng_min) { 35 addon_class = 'placemark_layout_container--one'; 36 d = 15 + bit * 5; 37 var cluster = false; 38 } 39
40 var placemark_layout_container = $('<div class="' + addon_class + ' placemark_layout_container--' + bit + '">' + 41 '<div class="circle_layout">' + (p.count_stickers == '1' ? " " : p.count_stickers) + '</div></div>'); 42 var circleLayout = ymaps.templateLayoutFactory.createClass(placemark_layout_container.prop('outerHTML')); 43 var circlePlacemark = new ymaps.Placemark( 44 [p.lat_avg, p.lng_avg], {}, { 45 iconLayout: circleLayout, 46 // ÐпиÑÑваем ÑигÑÑÑ Ð°ÐºÑивной облаÑÑи "ÐÑÑг". 47 iconShape: { 48 type: 'Circle', 49 // ÐÑÑг опиÑÑваеÑÑÑ Ð² виде ÑенÑÑа и ÑадиÑÑа 50 coordinates: [0, 0], 51 radius: d / 2 52 } 53 }); 54 circlePlacemark.cluster_settings = p; 55 if (cluster) { 56 console.log('cluster'); 57 circlePlacemark.events.add('click', function (e) { 58 var cluster_settings = e.get('target').cluster_settings; 59 map.setBounds([[cluster_settings.lat_min, cluster_settings.lng_min], [cluster_settings.lat_max, cluster_settings.lng_max]]); 60 if (map.getZoom() > 18) { 61 console.log('setZoom 1'); 62 map.setZoom(18); 63 } 64 }); 65 } else { 66 console.log('point'); 67 circlePlacemark.events.add('click', function (e) { 68 var placemark = e.get('target'); 69 var cluster_settings = placemark.cluster_settings; 70 var d = {sticker_ids: cluster_settings.sticker_ids, region: cluster_settings.region}; 71 $.ajax({
72 url: '/api/stickers2map/', 73 dataType: 'json', 74 method: 'post', 75 data: d, 76 }).done(function (data) { 77 var newContent = ''; 78 for (i in data.result) { 79 var sticker = data.result[i]; 80 newContent += "<a class='baloon-row' href='" + sticker.url + "' target='_blank'>\n\ 81 <div class='photo'>\n\ 82 " + (sticker.image != null ? "<img src='" + sticker.image + "'/>" : "") + "\n\ 83 <div class='type'>" + sticker.type_name + "</div>\n\ 84 </div>\n\ 85 <div class='info'>\n\ 86 <div class='address'>" + sticker.address + "</div>\n\ 87 <div class='text'>" + sticker.info + "</div>\n\ 88 <div class='price'>" + sticker.price + "</div>\n\ 89 </div>\n\ 90 <div class='clear'></div>\n\ 91 </a>"; 92 } 93 map.balloon.open([cluster_settings.lat_avg, cluster_settings.lng_avg], newContent, {}); 94 95 }); 96 }); 97 } 98 99 100 markers.add(circlePlacemark); 101 102 } 103 104 map.geoObjects.add(markers); 105} 106 107 108var button_stickers = null; 109 110function similar_marker_show() { 111 112 113 button_stickers = $('<a class="button-map button-map-stickers">ÐоказаÑÑ Ð¿Ð¾Ñ Ð¾Ð¶Ð¸Ðµ ваÑианÑÑ</a>').appendTo($('#tab_maps')); 114 button_stickers.click(function () { 115 $(this).toggleClass('active'); 116 if ($(this).hasClass('active')) { 117 similar_marker_load(); 118 if (typeof yaCounterMain === 'object') { 119 yaCounterMain.reachGoal('map_click_more_stickers', '1'); 120 } 121 } else { 122 123 124 functions_sticker_view.stiker_markers.removeAll(); 125 functions_sticker_view.map.geoObjects.add(functions_sticker_view.stiker_markers); 126 127 } 128 }); 129 functions_sticker_view.stiker_markers = false; 130 131 132 //similar_marker_load(); 133 134 135 functions_sticker_view.map.events.add('actionend', function (event) { 136 similar_marker_load(); 137 }); 138 139 140 141} 142 143 144 145function similar_marker_load() { 146 if (!button_stickers.hasClass('active')) { 147 return; 148 } 149 150 if (functions_sticker_view.timer_LSM) { 151 clearTimeout(functions_sticker_view.timer_LSM); 152 } 153 154 functions_sticker_view.timer_LSM = setTimeout(function () { 155 156 var url = "/" + 157 sticker_section_path + "/" + sticker_action_path + "/?q=" + 158 "7_" + parseInt(sticker_price_full * 1.2) + 159 ".8_" + parseInt(sticker_price_full * 0.8) + ".57_1"; 160 var s_v = functions_sticker_view.map.getBounds()[0][0] + ';' + functions_sticker_view.map.getBounds()[0][1] + 161 ';' + functions_sticker_view.map.getBounds()[1][0] + ';' + functions_sticker_view.map.getBounds()[1][1] + 162 ';' + functions_sticker_view.map.getZoom(); 163 164 s_v = s_v.split('-').join('m').split('.').join(','); 165 url += ".58_" + s_v; 166 167 168 169 170 171 $.ajax({
172 url: url, 173 dataType: 'json', 174 method: 'post' 175 }).done(function (data) { 176 if (functions_sticker_view.stiker_markers) { 177 functions_sticker_view.stiker_markers.removeAll(); 178 functions_sticker_view.map.geoObjects.add(functions_sticker_view.stiker_markers); 179 } 180 functions_sticker_view.stiker_markers = new ymaps.GeoObjectCollection({}, {}); 181 rendering_sticker_marker_ya(data.cluster, functions_sticker_view.map, functions_sticker_view.stiker_markers, sticker_id); 182 }); 183 }, 500); 184}
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.