1

現在、Google Map KML Layersで遊んでいます(そして学習しています)。以下のコードは機能しますが、一度オフにすると(またはnullに設定すると)、レイヤーをオンに戻すことはできません。DOMリスナーを追加する必要があると思いますが、これを行う方法がわかりません。感謝します。

<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"> </script>
<script type="text/javascript">
var layers = [];

function initialize() {
  var myLatLng = new google.maps.LatLng(-41.356341319572, 147.41842480153);
  var bounds = new google.maps.LatLngBounds();
  var myOptions = {
    zoom: 12,
    center: myLatLng,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  };
  var map = new google.maps.Map(document.getElementById("show_map"),myOptions);
  var image1 = 'images/sa.png';
  var ctaLayer = new google.maps.KmlLayer('http://a.server/inc/kml_files/search_tests.kmz');
  ctaLayer.setMap(map);
  var varLatLng = new google.maps.LatLng(-41.356341319572,147.41842480153);

  layers[1] = new google.maps.KmlLayer('http://a.server/inc/kml_gps/p2track.kml', {preserveViewport:true});
  layers[1].setMap(map);
  layers[2] = new google.maps.KmlLayer('http://a.server/inc/kml_gps/p5_day2.kml', {preserveViewport:true});
  layers[2].setMap(map);
  bounds.extend(varLatLng);
  map.fitBounds(bounds);
}

function toggleLayer(i) {
  if(layers[i].getMap() === null) {
    layers[i].setMap(map);
  } else {
    layers[i].setMap(null);
  }
}

</script>
</head />
<body style="margin:0px; padding:0px;" onload="initialize()" />
<div id="show_map" style="width:100%; height:95%;"></div>
<input type="button" id="layer1" onclick="toggleLayer(1)" value="GPS&nbsp;Tracks 1 On/Off">
<input type="button" id="layer2" onclick="toggleLayer(2)" value="GPS&nbsp;Tracks 2 On/Off">
</body>
</html>

「layers[i].setMap(map);」で「マップが定義されていません」というエラーが発生します。もう一度オンにしようとすると。

TIA

4

1 に答える 1

1

これは、マップ変数が関数initialize()内で定義されたローカル変数であるためです。マップを定義するときに「var」を削除するか、initialize()関数のすぐ上にマップを定義することができます-

  var map = new google.maps.Map(document.getElementById("show_map"),myOptions);
于 2013-01-20T04:53:58.253 に答える