javascript - 在 JavaScript 中引用 InfoWindowLite

标签 javascript html infowindow esri arcgis-js-api

我正在尝试使用 JavaScript 添加信息窗口函数。除此之外,我还在FeatureLayers中添加了图例和比例尺。然而,当我尝试添加到 InfoWindow 中时,当我尝试在 Chrome 中运行它时,所有内容都消失了。我知道属性在 JavaScript 中的放置顺序很重要,但我不知道将 InfoWindow 粘贴到哪里。我正在使用 Notepad++。

这是我尝试添加到信息窗口之前的代码。

<!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>

这是我尝试添加 InfoWindow 的引用后的代码(所有内容都消失了)

    <!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>

任何帮助将不胜感激。谢谢!

最佳答案

此小部件的要求路径是“esri/dijit/InfoWindowLite”而不是“..infoWindowLite”

关于javascript - 在 JavaScript 中引用 InfoWindowLite,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31118138/

相关文章:

javascript - 在我的情况下如何以 Angular 显示和隐藏

javascript - DZSlides 如何缩放视口(viewport)内容?

javascript - 如何序列化来自非表单元素的数据并使其可从 params[ :model]

javascript - 在 Jupyter 笔记本上 Html 访问 JS 文件

javascript - 温泉用户界面 :set active carousel item to 0 (menu of sliding-menu with list of carousel)

javascript - Eclipse Javascript 错误突出显示

html - 图像未从 CSS 加载

标记信息窗口中的 Android 谷歌地图 HTML

android - 如何在信息窗口中显示相应标记的适当的多个数据

javascript - 具有多个标记和方向的 infoWindows 问题Google Maps API v3 中的显示变量