2015-06-29 22 views
0

我試圖在JavaScript中添加信息窗口函數。除此之外,我在FeatureLayers中添加了一個Legend和Scalebar。然而,當我試圖在我的InfoWindow中添加時,當我嘗試在Chrome中運行時,所有內容都會消失。我意識到屬性放置在JavaScript中的順序很重要,但我不知道在哪裏粘貼InfoWindow。我正在使用Notepad ++。在JavaScript中引用InfoWindowLite

這是我嘗試添加InfoWindow之前的代碼。

<!DOCTYPE html> 
<html> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"> 
<title></title> 
<link rel="stylesheet" href="http://js.arcgis.com/3.9/js/esri/css/esri.css"> 
<link rel="stylesheet" href="http://js.arcgis.com/3.9/js/dojo/dijit/themes/claro/claro.css"> 
<script src="http://js.arcgis.com/3.9/"></script> 

<style> 
html, body{ 
height: 97%; 
width: 98%; 
margin: 1%; 
} 
#rightPane { 
width: 20%; 
} 
#legendPane { 
border: solid #97DCF2 1px; 
} 

</style> 

<script> 
var map; 
require([ 
"esri/map", "esri/layers/FeatureLayer", "esri/dijit/Legend", 
"dojo/_base/array", "dojo/parser", "esri/dijit/Scalebar", 
"dijit/layout/BorderContainer", "dijit/layout/ContentPane", 
"dijit/layout/AccordionContainer", "dojo/domReady!" 
], function(
Map, FeatureLayer, Legend, 
arrayUtils, parser, Scalebar 
) { 
parser.parse(); 
map = new Map("map", { 
basemap:"topo", 
center: [-98.416, 39.781], 
zoom: 6 
}); 
// scalebar 
    var scalebar = new Scalebar({ 
     map: map, 
     // "dual" displays both miles and kilmometers 
     // "english" is the default, which displays miles 
     // use "metric" for kilometers 
     scalebarUnit: "dual", attachTo:"bottom-center" 

    }); 

// feature layer 
    var featureLayer = new 
FeatureLayer("http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3", { 
mode: FeatureLayer.MODE_ONDEMAND, 
outFields:["STATE_NAME", "SUB_REGION", "STATE_ABBR"] 
}); 
map.addLayer(featureLayer); 

map.infoWindow.resize(200,75); 


//add the legend 
map.on("layers-add-result", function (evt) { 
var layerInfo = arrayUtils.map(evt.layers, function (layer, index) { 
return {layer:layer.layer, title:layer.layer.name}; 
}); 
if (layerInfo.length > 0) { 
var legendDijit = new Legend({ 
map: map, 
layerInfos: layerInfo 
}, "legendDiv"); 
legendDijit.startup(); 
} 
}); 
map.addLayers([featureLayer]); 
}); 

var legendFeature = new 
FeatureLayer("http://www.onemap.sg/ArcGIS/rest/services/TOC/MapServer/6", { 
mode: FeatureLayer.MODE_ONDEMAND, 
outFields:["*"] 
}); 


</script> 



</head> 

<body class="claro"> 
<div id="content" data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters:true" style="width: 100%; height: 100%; margin: 0;"> 
<div id="rightPane" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'right'"> 
    <div data-dojo-type="dijit/layout/AccordionContainer"> 
    <div data-dojo-type="dijit/layout/ContentPane" id="legendPane" data-dojo-props="title:'Legend', selected:true"> 
    <div id="legendDiv"></div> 
    </div> 
    <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="title:'Pane 2'"> 
    This pane could contain tools or additional content 
    </div> 
    </div> 
</div> 
<div id="map" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'" style="overflow:hidden;"> 

</div> 

</div> 
</body> 
</html> 

和這裏的

<!DOCTYPE html> 
<html> 
<head> 
    <!-- add in meta elements --> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
    <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"> 
    <title>Mock Practical</title> 
    <!-- reference styles --> 
    <link rel="stylesheet" href="http://js.arcgis.com/3.9/js/esri/css/esri.css"> 
    <link rel="stylesheet" href="http://js.arcgis.com/3.9/js/dojo/dijit/themes/claro/claro.css"> 
    <!-- reference arcGIS javascript --> 
    <script src="http://js.arcgis.com/3.9/"></script> 
    <style> 
    html, body{ 
    height: 97%; 
    width: 98%; 
    margin: 1%; 
    } 
    #rightPane { 
    width: 20%; 
    } 
    #legendPane { 
    border: solid #97DCF2 1px; 
    } 

    </style> 
    <!-- javascript --> 
    <script> 
    var map; 
    require([ 
    "esri/map", "esri/dijit/infoWindowLite", "esri/InfoTemplate", "esri/layers/FeatureLayer", "esri/dijit/Legend", 
    "dojo/_base/array", "dojo/parser", "esri/dijit/Scalebar", 
    "dijit/layout/BorderContainer", "dijit/layout/ContentPane", 
    "dijit/layout/AccordionContainer","dojo/dom-construct", "dojo/domReady!" 
    ], function(
    Map, InfoWindowLite, InfoTemplate, FeatureLayer, Legend, 
    arrayUtils, parser, Scalebar, domConstruct 
    ) { 
    parser.parse(); 
    map = new Map("map", { 
    basemap:"topo", 
    center: [-98.416, 39.781], 
    zoom: 6 
    }); 
    // scalebar 
     var scalebar = new Scalebar({ 
      map: map, 
      // "dual" displays both miles and kilmometers 
      // "english" is the default, which displays miles 
      // use "metric" for kilometers 
      scalebarUnit: "dual", attachTo:"bottom-center" 

     }); 

    // feature layer 
     var featureLayer = new 
    FeatureLayer("http://sampleserver6.arcgisonline.com/arcgis/rest/services/Census/MapServer/3", { 
    mode: FeatureLayer.MODE_ONDEMAND, 
    outFields:["STATE_NAME", "SUB_REGION", "STATE_ABBR"] 
    }); 
    map.addLayer(featureLayer); 

    map.infoWindow.resize(200,75); 


    //add the legend 
    map.on("layers-add-result", function (evt) { 
    var layerInfo = arrayUtils.map(evt.layers, function (layer, index) { 
    return {layer:layer.layer, title:layer.layer.name}; 
    }); 
    if (layerInfo.length > 0) { 
    var legendDijit = new Legend({ 
    map: map, 
    layerInfos: layerInfo 
    }, "legendDiv"); 
    legendDijit.startup(); 
    } 
    }); 
    map.addLayers([featureLayer]); 
    }); 

    var legendFeature = new 
    FeatureLayer("http://www.onemap.sg/ArcGIS/rest/services/TOC/MapServer/6", { 
    mode: FeatureLayer.MODE_ONDEMAND, 
    outFields:["*"] 
    }); 


    </script> 

</head> 

<body class="claro"> 
<div id="content" data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters:true" style="width: 100%; height: 100%; margin: 0;"> 
<div id="rightPane" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'right'"> 
    <div data-dojo-type="dijit/layout/AccordionContainer"> 
    <div data-dojo-type="dijit/layout/ContentPane" id="legendPane" data-dojo-props="title:'Legend', selected:true"> 
    <div id="legendDiv"></div> 
    </div> 
    <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="title:'Pane 2'"> 
    This pane could contain tools or additional content 
    </div> 
    </div> 
</div> 
<div id="map" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'" style="overflow:hidden;"> 

</div> 

</div> 
</body> 
</html> 

任何幫助將不勝感激後,我試圖在信息窗口中添加引用(其中一切消失)的代碼。謝謝!

回答

1

要求此小部件的路徑是「esri/dijit/InfoWindowLite」而不是「..infoWindowLite」