Карта слоев таблиц слияния: скрыть слой при загрузке - показать по запросу, установив флажок - PullRequest
0 голосов
/ 05 февраля 2012

У меня есть две Fusion Tables, которые добавляются как слои к визуализации карты.

  • Layer1 - это список мест (при нажатии появляется информационный блок)
  • Layer2 - этокарта (импортные кмл полигоны) нескольких регионов.Каждый из них окрашен (закрасьте цвет) в соответствии с прогнозом погоды (т.е. синий для высокой вероятности дождя; красный для солнечного ...)

Что я хочу:

  • под нагрузкой: показать только Layer1;Layer2 остается скрытым.
  • Если пользователь хочет загрузить / просмотреть Layer2, он должен установить флажок.

Я не знаю, как это сделать.Даже если это возможно.

Ниже мой код.

Заранее спасибо!

<script type="text/javascript"src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
var map;

var layer;
var tableid = 1111;

var layer2;
var tableid2 = 2222;

function initialize() {
map = new google.maps.Map(document.getElementById('map_canvas'), {
center: new google.maps.LatLng(10, 10),
zoom: 8,
mapTypeId: google.maps.MapTypeId.ROADMAP
});

layer = new google.maps.FusionTablesLayer(tableid);
layer.setQuery("SELECT 'geometry' FROM " + tableid);
layer.setMap(map);

layer2 = new google.maps.FusionTablesLayer(tableid2);
layer2.setQuery("SELECT 'coordenadas' FROM " + tableid2);
layer2.setMap(map); 
 }

function changeLayer(tableidselections) {

if (tableidselections == 1111){
     if (document.getElementById("avisos").checked == true) {
       if(layer.getMap() == null) { layer.setMap(map); }
     }

     if (document.getElementById("avisos").checked == false) {
         layer.setMap(null); 
     }

}

if (tableidselections == 2222){
     if (document.getElementById("eventos").checked == true) {
       if(layer2.getMap() == null) { layer2.setMap(map); }
     }

     if (document.getElementById("eventos").checked == false) {
         layer2.setMap(null);
     }
}

 }

 </script>

</head>
<body onload="initialize();">

<div id="selector_box">
  <table> 
        <tr><td> 
          <form id="selector_form" style="font-size:14px"> 
              <input type="checkbox" value="1111" name="selector" id="avisos" onclick="changeLayer(this.value);">Show weather info
              <!-- <input type="checkbox" value="2222" name="selector" id="eventos" onclick="changeLayer(this.value);">Eventos -->
          </form> 
        </td></tr>
  </table>
</div>

1 Ответ

1 голос
/ 06 февраля 2012

Да, вы можете сделать это;ваш код кажется, что он должен работать.Просто пропустите layer2.setMap(map) в методе initialize, и тогда layer2 не будет загружаться по умолчанию.

Если у вас возникли проблемы, то, возможно, опубликуйте свой полный код (с фактическими идентификаторами таблиц) в jsfiddle или другом месте и скажите, в чем проблема.

...