Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 切换图层时图形图层的顺序/保持比例/_Javascript_Html_Google Maps - Fatal编程技术网

Javascript 切换图层时图形图层的顺序/保持比例/

Javascript 切换图层时图形图层的顺序/保持比例/,javascript,html,google-maps,Javascript,Html,Google Maps,我的教授希望我在代码中纠正两件事。第一个是我需要在泛洪平原层的顶部绘制RU剩余层,以便所有剩余层都可见。第二,在我的代码中似乎有一个东西,当你切换漫滩图层时,它会重置地图的比例,如果没有发生这种情况,我会更喜欢。这是我的密码: <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no"> <meta charset="utf-8"&

我的教授希望我在代码中纠正两件事。第一个是我需要在泛洪平原层的顶部绘制RU剩余层,以便所有剩余层都可见。第二,在我的代码中似乎有一个东西,当你切换漫滩图层时,它会重置地图的比例,如果没有发生这种情况,我会更喜欢。这是我的密码:

<html>
  <head>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no">
    <meta charset="utf-8">
    <title>Toggle</title>
    <style>
      html, body, #map-canvas {
        height: 100%;
        margin: 0px;
        padding: 0px
      }
      #panel {
        position: absolute;
        top: 5px;
        left: 50%;
        margin-left: -180px;
        z-index: 5;
        background-color: #fff;
        padding: 5px;
        border: 1px solid #999;
      }
     </style>
     <script src="https://maps.googleapis.com/maps/api/js?v=3.exp"></script>
    <script type="text/javascript" src="http://google-maps-utility-library-v3.googlecode.com/svn-history/r172/trunk/arcgislink/src/arcgislink.js"></script>

    <script>

var overlay;
var map;
var url;
var dynamap;

function initialize() {
  var mapOptions = {
    zoom: 13,
    center: new google.maps.LatLng(37.1276, -80.56895),

  };

map = new google.maps.Map(document.getElementById('map-canvas'),
      mapOptions);

url = 'http://geog-grant.radford.edu/arcgiscloud/rest/services/RU/MapServer';
    dynamap = new gmaps.ags.MapOverlay(url);

overlay = new google.maps.KmlLayer({
    url: 'http://www.radford.edu/kblakemore/KML_Layer_Severity/KML_Floodplain_Radford/doc.kml'
  });


}

function toggleFloodplain() {
 overlay.setMap(overlay.getMap() ? null : map);
}

function toggleRUrest() {
    dynamap.setMap(dynamap.getMap() ? null : map);
}


window.onload = initialize;


    </script>

  </head>
  <body>
     <div id ="panel">

      <p> Floodplains Radford, Virginia </p>
       <input id= "toggle" type="checkbox" value="toggleFloodplain"     onclick="toggleFloodplain();"> Floodplains </input>
       <input id= "toggle" type="checkbox" value="toggleRUrest" onclick="toggleRUrest()">Toggle     RUrest</button>
    </div>
    <div id="map-canvas"></div>
  </body>

</html>

切换
html,正文,#地图画布{
身高:100%;
边际:0px;
填充:0px
}
#面板{
位置:绝对位置;
顶部:5px;
左:50%;
左边距:-180px;
z指数:5;
背景色:#fff;
填充物:5px;
边框:1px实心#999;
}
var叠加;
var映射;
var-url;
var-dynamap;
函数初始化(){
变量映射选项={
缩放:13,
中心:新google.maps.LatLng(37.1276,-80.56895),
};
map=new google.maps.map(document.getElementById('map-canvas'),
地图选项);
url='1〕http://geog-grant.radford.edu/arcgiscloud/rest/services/RU/MapServer';
dynamap=newgmaps.ags.MapOverlay(url);
overlay=new google.maps.kmlayer({
网址:'http://www.radford.edu/kblakemore/KML_Layer_Severity/KML_Floodplain_Radford/doc.kml'
});
}
函数toggleFloodplain(){
overlay.setMap(overlay.getMap()?null:map);
}
函数toggleRUrest(){
setMap(dynamap.getMap()?null:map);
}
window.onload=初始化;
弗吉尼亚州雷德福德河漫滩

漫滩 拨动滑轨
您必须为dynamap使用另一个地图窗格

地图窗格在已使用的库中硬编码(第2796行):

使用例如
markerLayer
而不是
overlayer


要更改它,您必须直接更改库或覆盖
MapOverlay.prototype.onAdd
(这是分配窗格的函数)

您尝试了什么?出了什么问题?你做了什么研究?这个网站不是为你做这些工作的…对不起,它不是为你这样做的。我只是在寻找一个前进的方向。这是我第一次使用js和html进行编码(很少使用java,但它帮助我创建了为切换实现的函数)。我已经看过了google地图的javascript api和javascrpit的arcGIS api。我在arcGIS javascript中找到了“在地图服务中重新排列图层”文档。其内容为“若要重新排列图层,请单击图层名称并将其拖动到新位置。当图层名称被拖放到列表中的新位置时,会请求获取更新的地图图像。我尝试了此操作,但没有更改任何内容。是因为一个图层是动态地图图层,而另一个图层是KML吗?您关于保留视口的问题(不缩放以适应Kmlayer)是使用的
preserveViewport:true
选项。(这是其他几个类似问题的重复)
panes.overlayLayer.appendChild(div);