Javascript.RU

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

Вывод меток на карту Google и удаление
День добрый!
будьте добры дать совет, вот говнокод который при клике по чекбоксу делает аякс запрос на xml файл, забирает данные и выводит их метками на карту гугл.
при повторном клике есть оставить marker.setMap(null); то удаляется только последний маркер. пробовал создать массив markerArray но не выходит.
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps JavaScript API v3 Example: Common Loader</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="http://gmaps-samples-v3.googlecode.com/svn/trunk/xmlparsing/util.js"></script>
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>	
<script type="text/javascript">
  var infowindow;
  var map;

  function initialize() {
    var myLatlng = new google.maps.LatLng(37.4419, -122.1419);
    var myOptions = {
      zoom: 13,
      center: myLatlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    }
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);   
  }

$(document).ready(function(){
 $('.itemService input[type="checkbox"]').click(function(){
  var serviceID = $(this).val();
	var markerArray = [];
  if($(this)[0].checked == false){
   // было marker.setMap(null); - удаляет только последний маркер
 	for(i =0; i< markerArray.length; i++){
 		 markerArray[i].setMap(null);
 	}
   
  }else{
// при первом клике загружает маркеры на карту
  	 downloadUrl("moredata.xml", function(data) {
      var markers = data.documentElement.getElementsByTagName("marker");
      for (var i = 0; i < markers.length; i++) {

      	if ($(markers[i]).attr('age') == 20){
      		var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
                                    parseFloat(markers[i].getAttribute("lng")));

       		markerArray.push(createMarker(markers[i].getAttribute("name"), latlng));
      	}
      	

        //var latlng = new google.maps.LatLng(parseFloat(markers[i].getAttribute("lat")),
        //parseFloat(markers[i].getAttribute("lng")));
        //markerArray.push(createMarker(markers[i].getAttribute("name"), latlng));
        //console.log(markerArray);
       }
     });
  	
  	function createMarker(name, latlng) {
    marker = new google.maps.Marker({position: latlng, map: map});
    google.maps.event.addListener(marker, "click", function() {
      if (infowindow) infowindow.close();
      infowindow = new google.maps.InfoWindow({content: name});
      infowindow.open(map, marker);
    });
   
    return marker;
    }
    
  }
 });
});

</script>
</head>
<body onload="initialize()">
  <div id="map_canvas" style="width:400px; height:300px"></div>
  <div class="catalogServices">
	<div class="itemService"><input type="checkbox" name="CATALOG_SERVICES[]" value="1280"> Захист прав ВІЛ-позитивних людей (юридичні послуги)</div>   
	<div class="itemService"><input type="checkbox" name="CATALOG_SERVICES[]" value="1279"> Індивідуальне представництво інтересів ВІЛ-позитивних людей (сприяння в оформленні\відновленні документів, соціальної допомоги, пенсії, інвалідності тощо)</div>   
	<div class="itemService"><input type="checkbox" name="CATALOG_SERVICES[]" value="1278"> Продіагностика ТБ за допомогою рентгену</div>   
	<div class="itemService"><input type="checkbox" name="CATALOG_SERVICES[]" value="1277"> Діагностика ТБ за допомогою біопсії</div>   
</div>
</body>
</html>


Вот хml файл
<?xml version="1.0" encoding="UTF-8"?>
<markers>
  <marker name="Jackie" age="10" lat="50.39188559752663" lng="30.498046875"/>
  <marker name="Peter" age="10" lat="37.413320" lng="-122.125604"/>
  <marker name="Mary"  age="20" lat="37.433480" lng="-122.139062"/>
  <marker name="Puff"  age="20" lat="37.445427" lng="-122.162307"/>
 
</markers>

Последний раз редактировалось bender_rodrigezz, 14.10.2013 в 16:42.
Ответить с цитированием
  #2 (permalink)  
Старый 16.10.2013, 12:16
Аватар для deivan
Профессор
Отправить личное сообщение для deivan Посмотреть профиль Найти все сообщения от deivan
 
Регистрация: 02.08.2012
Сообщений: 293

чтобы сделать массив маркеров, нужно для каждого инфоокна свою область видимости создать, например вот так: http://hashcode.ru/questions/38346/j...owindow-api-v3
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вопрос к знатокам google apps script gtr-kaz Общие вопросы Javascript 3 22.10.2014 08:31
Как сделать карту, похожую на Google Maps? QRV (X)HTML/CSS 2 30.10.2012 12:58
как создать собственную карту как в Google map Khazaryan jQuery 1 21.03.2011 20:55
как создать собственную карту как в Google map Khazaryan Общие вопросы Javascript 1 20.03.2011 02:56