在Google Maps API v3中切换多个KML / KML图层 [英] Toggle multiple KML/KML layers in google maps API v3

查看:93
本文介绍了在Google Maps API v3中切换多个KML / KML图层的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我一直在绑定Google地图中的KML图层。我已经安装了这样的设置,只有一层显示出来没有任何切换按钮。我在网上跟随了很多例子,但似乎没有任何工作。我设置的代码如下:

 < html> 
< head>
< script type =text / javascript>
var layers = [];
layers [0] = new google.maps.KmlLayer('http://wrf1.geology.um.maine.edu/bipush/kml/plot_5254.kml',
{preserveViewport:true}) ;
layers [1] = new google.maps.KmlLayer('http://wrf1.geology.um.maine.edu/bipush/kml/plot_5938.kmz',
{preserveViewport:true}) ;
var map;

函数initialize(){
var latlng = new google.maps.LatLng(52.5028910,13.41032740);
var myOptions = {
zoom:3,
center:latlng,
mapTypeIds:google.maps.MapTypeId.ROADMAP
}
map = new google .maps.Map(的document.getElementById( map_canvas 的),myOptions);

$ b $ function toggleLayers(i)
{
if(layers [i] .getmap()== null){
kmlLayer01.setMap(空值);
}
else {
layers [i] .setMap(null);
}
}


< / script> < /头>
< body onload =initialize()>
Layer1< input type =checkboxid =layer_01onclick =toggleLayers(0);/>
Layer2< input type =checkboxid =layer_02onclick =toggleLayers(1);/>
< div id =map_canvas>< / div>
< / body>
< / html>

请帮助!

解决方案

 <$>  
  • 发布的代码不包含API, c $ c>< script type =text / javascriptsrc =http://maps.google.com/maps/api/js?sensor=false>< / script>


  • 有几个错别字:


    • javascript区分大小写getmap不是有效的方法名称,应该是getMap。

    • kmlLayer01未定义,可能应该是图层[ i]

       < html> 
      < head>
      < script type =text / javascriptsrc =http://maps.google.com/maps/api/js?sensor=false>< / script>

      < script type =text / javascript>
      var layers = [];

      layers [0] = new google.maps.KmlLayer('http://wrf1.geology.um.maine.edu/bipush/kml/plot_5254.kml',
      {preserveViewport :true});

      图层[1] =新增google.maps.KmlLayer('http://wrf1.geology.um.maine.edu/bipush/kml/plot_5938.kmz',
      {preserveViewport :true});
      var map;

      函数initialize(){
      var latlng = new google.maps.LatLng(52.5028910,13.41032740);
      var myOptions = {
      zoom:3,
      center:latlng,
      mapTypeIds:google.maps.MapTypeId.ROADMAP
      }
      map = new google .maps.Map(的document.getElementById( map_canvas 的),myOptions);

      $ b $ function toggleLayers(i)
      {

      if(layers [i] .getMap()== null){
      层[I] .setMap(地图);
      }
      else {
      layers [i] .setMap(null);
      }
      document.getElementById('status')。innerHTML + =toggleLayers(+ i +)[setMap(+ layers [i] .getMap()+] returns status:+ layers [i] .getStatus()+< br>;
      }


      < / script>
      < / head>
      < body onload =initialize()>
      Layer1< input type =checkboxid =layer_01onclick =toggleLayers(0);/>
      Layer2< input type =checkboxid =layer_02onclick =toggleLayers(1);/>
      < div id =map_canvasstyle =height:500px; width:600px;><< ; / div>
      < div id =status>< / div>
      < / body>
      < / html>





  • 工作示例



    代码段:



      var layers = []; layers [0] = ne w google.maps.KmlLayer(http://www.geocodezip.com/geoxml3_test/utah-hunt_com_DeerSouthern_kml.xml,/*'wrf1.geology.um.maine.edu/bipush/kml/plot_5254。 kml',原始KML不再可用* / {preserveViewport:true}); layers [1] = new google.maps.KmlLayer(http://www.geocodezip.com/geoxml3_test/utah-hunt_com_DeerSoutheastern_kml.xml,/ *'http://wrf1.geology.um.maine.edu/bipush/kml/plot_5938.kmz',原始KML不再可用* / {preserveViewport:true}); var map;函数initialize(){var latlng = new google.maps.LatLng(38,-112 / * 52.5028910,13.41032740 * /); var myOptions = {zoom:5,center:latlng,mapTypeIds:google.maps.MapTypeId.ROADMAP} map = new google.maps.Map(document.getElementById(map_canvas),myOptions);} function toggleLayers(i){ if(layers [i] .getMap()== null){layers [i] .setMap(map); } else {layers [i] .setMap(null); } document.getElementById('status')。innerHTML + =toggleLayers(+ i +)[setMap(+ layers [i] .getMap()+] returns status:+ layers [i] .getStatus )+< br>;} google.maps.event.addDomListener(window,'load',initialize);  

     < script src =http://maps.google.com/maps/api/js>< / script> Layer1< input type = checkboxid =layer_01onclick =toggleLayers(0);/> Layer2< input type =checkboxid =layer_02onclick =toggleLayers(1);/>< div id = map_canvasstyle =height:500px; width:600px;>< / div>< div id =status>< / div>  


    I have been tying to toggle KML layers in google maps. I have had it setup such that only one layer shows up with out any toggle button. I followed many examples online but none seem to work. The code I have setup so far is below:

    <html>
    <head>
    <script type="text/javascript">
    var layers=[];
    layers[0] = new  google.maps.KmlLayer('http://wrf1.geology.um.maine.edu/bipush/kml/plot_5254.kml',
     {preserveViewport: true});
    layers[1] = new google.maps.KmlLayer('http://wrf1.geology.um.maine.edu/bipush/kml/plot_5938.kmz',
    {preserveViewport: true});
    var map;
    
    function initialize() {
        var latlng = new google.maps.LatLng(52.5028910, 13.41032740);
        var myOptions = {
                zoom: 3,
                center: latlng,
                mapTypeIds: google.maps.MapTypeId.ROADMAP
        }
                map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
        }
    
    function toggleLayers(i)
    {
            if(layers[i].getmap()==null){
                    kmlLayer01.setMap(null);
            }
            else{
                        layers[i].setMap(null);
                }
    }
    
    
    </script> </head>
    <body onload="initialize()">
    Layer1 <input type="checkbox" id="layer_01" onclick="toggleLayers(0);"/>
    Layer2 <input type="checkbox" id="layer_02" onclick="toggleLayers(1);"/>
    <div id="map_canvas"></div>
    </body>
    </html>
    

    Please help!

    解决方案

    1. the posted code does not include the API, this is missing:

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

    2. There are a few typos:

      • javascript is case sensitive getmap is not a valid method name, should be getMap.
      • kmlLayer01 is not defined, probably should be layers[i]

        <html>
        <head>
        <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
        
        <script type="text/javascript">
        var layers=[];
        
        layers[0] = new  google.maps.KmlLayer('http://wrf1.geology.um.maine.edu/bipush/kml/plot_5254.kml',
        {preserveViewport: true});
        
        layers[1] = new google.maps.KmlLayer('http://wrf1.geology.um.maine.edu/bipush/kml/plot_5938.kmz',
        {preserveViewport: true});
        var map;
        
        function initialize() {
            var latlng = new google.maps.LatLng(52.5028910, 13.41032740);
            var myOptions = {
                    zoom: 3,
                    center: latlng,
                    mapTypeIds: google.maps.MapTypeId.ROADMAP
            }
            map = new google.maps.Map(document.getElementById("map_canvas"),myOptions);
        }
        
        function toggleLayers(i)
        {
        
          if(layers[i].getMap()==null) {
             layers[i].setMap(map);
          }
          else {
             layers[i].setMap(null);
          }
          document.getElementById('status').innerHTML += "toggleLayers("+i+") [setMap("+layers[i].getMap()+"] returns status: "+layers[i].getStatus()+"<br>";
        }
        
        
        </script>
        </head>
        <body onload="initialize()">
        Layer1 <input type="checkbox" id="layer_01" onclick="toggleLayers(0);"/>
        Layer2 <input type="checkbox" id="layer_02" onclick="toggleLayers(1);"/>
        <div id="map_canvas" style="height:500px; width:600px;"></div>
        <div id="status"></div>
        </body>
        </html>
        

    working example

    code snippet:

    var layers = [];
    
    layers[0] = new google.maps.KmlLayer("http://www.geocodezip.com/geoxml3_test/utah-hunt_com_DeerSouthern_kml.xml",
      /*'http://wrf1.geology.um.maine.edu/bipush/kml/plot_5254.kml', original KML no longer available */
      {
        preserveViewport: true
      });
    
    layers[1] = new google.maps.KmlLayer("http://www.geocodezip.com/geoxml3_test/utah-hunt_com_DeerSoutheastern_kml.xml",
      /* 'http://wrf1.geology.um.maine.edu/bipush/kml/plot_5938.kmz', original KML no longer available */
      {
        preserveViewport: true
      });
    var map;
    
    function initialize() {
      var latlng = new google.maps.LatLng(38, -112 /*52.5028910, 13.41032740 */ );
      var myOptions = {
        zoom: 5,
        center: latlng,
        mapTypeIds: google.maps.MapTypeId.ROADMAP
      }
      map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    }
    
    function toggleLayers(i) {
    
      if (layers[i].getMap() == null) {
        layers[i].setMap(map);
      } else {
        layers[i].setMap(null);
      }
      document.getElementById('status').innerHTML += "toggleLayers(" + i + ") [setMap(" + layers[i].getMap() + "] returns status: " + layers[i].getStatus() + "<br>";
    }
    
    google.maps.event.addDomListener(window, 'load', initialize);

    <script src="http://maps.google.com/maps/api/js"></script>
    Layer1
    <input type="checkbox" id="layer_01" onclick="toggleLayers(0);" />Layer2
    <input type="checkbox" id="layer_02" onclick="toggleLayers(1);" />
    <div id="map_canvas" style="height:500px; width:600px;"></div>
    <div id="status"></div>

    这篇关于在Google Maps API v3中切换多个KML / KML图层的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

    查看全文
    登录 关闭
    扫码关注1秒登录
    发送“验证码”获取 | 15天全站免登陆