Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.09.2011, 11:39
Новичок на форуме
Отправить личное сообщение для ZeKuSS Посмотреть профиль Найти все сообщения от ZeKuSS
 
Регистрация: 19.09.2011
Сообщений: 2

Нужна помощь с google maps
На странице http://www.gid62.ru/categories/1/ имеется фильтр с кодом:

var facilitiesAbilitiesFilter = [];

function getIntersect(arr1, arr2) 
{
    var temp = [];
    for(var i = 0; i < arr1.length; i++){
        for(var k = 0; k < arr2.length; k++){
            if(arr1[i] == arr2[k]){
                temp.push( arr1[i]);
                break;
            }
        }
    }
    return temp;
}

function areArraysEqual(array1, array2) 
{
   var temp = new Array();
   if ( (!array1[0]) || (!array2[0]) ) {
      return false;
   }
   if (array1.length != array2.length) {
      return false;
   }
   for (var i=0; i<array1.length; i++) {
      key = (typeof array1[i]) + "~" + array1[i];
      if (temp[key]) { temp[key]++; } else { temp[key] = 1; }
   }
   for (var i=0; i<array2.length; i++) {
      key = (typeof array2[i]) + "~" + array2[i];
      if (temp[key]) {
         if (temp[key] == 0) { return false; } else { temp[key]--; }
      } else {
         return false;
      }
   }
   return true;
}

jQuery(function($)
{
	$("#page-facilities-filter").keyup(function(){ pageFacilitiesFilter(); }).val(inputFilterDefValue);
	$("#filter-reservation").click(function(){ pageFacilitiesFilter(); }).removeAttr('checked');
	
	$(".carousel").jCarouselLite({
		btnNext: ".carousel-next",
		btnPrev: ".carousel-prev",
		visible: 4
	});
	
	$(".carousel-next, .carousel-prev").click(function(){
		$(this).blur();
	});
	
	$(".filter-types li a").click(function(){
		$(this).parent('li').toggleClass('active');
		facilitiesAbilitiesFilter = [];
		$(".filter-types li.active").each(function()
		{
			facilitiesAbilitiesFilter.push($(this).children('a').attr('class'));
		});
		pageFacilitiesFilter();
		return false;
	});
	
	$(".page-facilities-meals-menu li a").click(function()
	{
		var sender = $(this);
		
		sender.blur().toggleClass('expanded');
		//$(".page-facilities-meals-menu li ol, .page-facilities-meals-menu li ul").hide();
		sender.siblings("ol, ul").slideToggle('fast');
		
		return false;
	});
	
	$(".page-facilities-meals-menu li ol li, .page-facilities-meals-menu li ul li").hover(function()
	{
		$(this).siblings("li").css('z-index', '6');
		$(this).css('z-index', '7');
		var _tip = $(this).children(".menu-item-desc");
		if (_tip.text() != '')
		{
			//_tip.fadeIn("fast");
			_tip.show();
		}
	}
	, function()
	{
		$(this).children(".menu-item-desc").hide();
	});
	
	var menuMealsExpandedAll = false;
	var menuMealsExpandedAllDefText = $("#menu-meals-expandall a").text();
	$("#menu-meals-expandall a").click(function()
	{
		var sender = $(this);
		sender.blur();
		menuMealsExpandedAll = !menuMealsExpandedAll;
		if (menuMealsExpandedAll)
		{
			$(".page-facilities-meals-menu li ol, .page-facilities-meals-menu li ul").show();
			sender.text('свернуть все');
		}
		else
		{
			$(".page-facilities-meals-menu li ol, .page-facilities-meals-menu li ul").hide();
			sender.text(menuMealsExpandedAllDefText);
		}
		return false;
	});
});

function pageFacilitiesFilter()
{
	var filter = $("#page-facilities-filter").val() != inputFilterDefValue ? $("#page-facilities-filter").val().toUpperCase() : '';
	var filterReservation = $("#filter-reservation:checked").length > 0;
	$(".results-list li").each(function()
	{
		
		var _abilities_pass = true;
		if (facilitiesAbilitiesFilter.length > 0)
		{
			var _abilities = $(this).attr('class').split(/\s+/);
			_abilities_pass = areArraysEqual(getIntersect(_abilities, facilitiesAbilitiesFilter), facilitiesAbilitiesFilter);
		}
		if 
		(
			$(this).hasClass("active") || 
			(
				$(this).find(".title").text().toUpperCase().indexOf(filter) >= 0 && 
				(!filterReservation || $.trim($(this).find(".reservation").text()) != "") &&
				_abilities_pass
			)
		)
		{
			$(this).slideDown('fast');
		}
		else
		{
			$(this).slideUp('fast');
		}
	});
}


и google maps

var map;
var mapMarkers = [];
var mapIcons = [];
var mapIconShadow;
var infoWindow;

mapIcons['red'] = new google.maps.MarkerImage
(
	'/i/gmarkers/red.png'
);

mapIcons['green'] = new google.maps.MarkerImage
(
	'/i/gmarkers/green.png'
);

mapIcons['blue'] = new google.maps.MarkerImage
(
	'/i/gmarkers/blue.png'
);

mapIconShadow = new google.maps.MarkerImage
(
	'/i/gmarkers/marker_sprite.png',
	new google.maps.Size(30, 34),
	new google.maps.Point(27, 0),
	new google.maps.Point(3, 34)
);

jQuery(function($)
{
	if ($("#map").length)
	{
		var latlng = new google.maps.LatLng(54.62466, 39.738571);
		map = new google.maps.Map(document.getElementById("map"), {
			zoom: 12,
			center: latlng,
			scrollwheel: true,
			mapTypeId: google.maps.MapTypeId.ROADMAP,
			mapTypeControl: true,
			mapTypeControlOptions: {style: google.maps.MapTypeControlStyle.DROPDOWN_MENU}
		});
		infoWindow = new google.maps.InfoWindow();
		if (typeof(mapLoaded) != 'undefined')
		{
			mapLoaded();
		}
	}
});



function mapMarkerAdd(lat, lng, html, ico, zindex)
{
	var marker = new google.maps.Marker({
        position: new google.maps.LatLng(lat, lng),
        map: map,
        icon: ico,
        shadow: mapIconShadow
    });
    if (typeof(zindex) != 'undefined') marker.setZIndex(zindex);
    // если метка зеленая - центрируем карту и выводим баббл
	if (ico == mapIcons['green'])
	{
		//map.setCenter(new google.maps.LatLng(lat + 0.002, lng));
		map.setCenter(new google.maps.LatLng(lat + 0.017, lng));
		infoWindow.setContent('<div id="map-'+Math.random()+'">'+html+'</div>');
		infoWindow.open(map, marker);
	}
	else
	{
		google.maps.event.addListener(marker, 'click', function() 
		{
			infoWindow.setContent('<div id="map-'+Math.random()+'">'+html+'</div>');
			infoWindow.open(map, marker);
		});
	}
	mapMarkers.push(marker);
}

function mapAutoZoom()
{
	var latlngBounds = new google.maps.LatLngBounds();
	var mapMarkersLength = mapMarkers.length;
	for (var i = 0; i < mapMarkersLength; i++)
	{
		latlngBounds.extend(mapMarkers[i].position);
	}
	map.fitBounds(latlngBounds);
}


Вопрос: Как можно сделать так, чтобы фильтр по верхнему скрипту применялся и к карте?
Я сам php программист, js знаю базово а разбирать некомментируемый код оставленный предыдущими разработчиками сложновато, да и времени в обрез ((
Ответить с цитированием
  #2 (permalink)  
Старый 19.09.2011, 11:48
Новичок на форуме
Отправить личное сообщение для ZeKuSS Посмотреть профиль Найти все сообщения от ZeKuSS
 
Регистрация: 19.09.2011
Сообщений: 2

Как я сам понимаю надо при задействовании фильтра посылать комманду очистки карты и с нуля забивать отфильтрованные маркеры... или можно иначе?
Ответить с цитированием
  #3 (permalink)  
Старый 15.11.2013, 16:18
Новичок на форуме
Отправить личное сообщение для Русланwww Посмотреть профиль Найти все сообщения от Русланwww
 
Регистрация: 15.11.2013
Сообщений: 1

может кому пригодится, и спасибо автору статьи!
function clearOverlays() {
if (mapMarkers) {
for (i in mapMarkers) {
mapMarkers[i].setMap(null);
}
}
mapMarkers = [];
}
Ответить с цитированием
  #4 (permalink)  
Старый 15.11.2013, 16:49
Аватар для jsru_
Кандидат Javascript-наук
Отправить личное сообщение для jsru_ Посмотреть профиль Найти все сообщения от jsru_
 
Регистрация: 09.04.2013
Сообщений: 149

Сообщение от ZeKuSS Посмотреть сообщение
Как я сам понимаю надо при задействовании фильтра посылать комманду очистки карты и с нуля забивать отфильтрованные маркеры... или можно иначе?
именно так, маркеры загоняются в глобальный массив, если надо обновить данные то удаляются по координатам в массиве, и новые данные загоняются в этот уже пустой массив
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как запустить модальное окно из информационного окна google maps? www123 jQuery 5 04.09.2011 23:38
JavaScript + Google Maps ahimaskrasavin Элементы интерфейса 5 20.06.2011 13:21
Приложение на API Google Maps tomAlba Работа 0 29.01.2011 15:52
нужна помощь dominosoko Серверные языки и технологии 4 14.03.2010 02:17