Hello all, I am trying to implement the search and directions widget into a single map. I am having trouble getting both to populate inside the map. I have copied and pasted from the samples and am having no luck. I can get each to run in their own map but not together. Here is what I have so far:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>MyOwn</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no"> <link rel="stylesheet" href="https://js.arcgis.com/3.22/dijit/themes/claro/claro.css"> <link rel="stylesheet" href="https://js.arcgis.com/3.22/esri/css/esri.css"> <style> html, body, #map { height: 100%; width: 100%; margin: 0; padding: 0; } #search { display: block; position: absolute; z-index: 3; top: 20px; left: 75px; } </style> <script src="https://js.arcgis.com/3.22/"></script> <script> require([ "esri/urlUtils", "esri/map","esri/dijit/Directions", "esri/dijit/Search", "dojo/parser","dijit/layout/BorderContainer","dijit/layout/ContentPane","dojo/domReady!"
], function (urlUtils, Map,Directions, Search, parser) {
parser.parse();
urlUtils.addProxyRule({
urlPrefix: "route.arcgis.com",
proxyUrl: "/sproxy/"
});
urlUtils.addProxyRule({
urlPrefix: "traffic.arcgis.com",
proxyUrl: "/sproxy/"
});
var map = new Map("map", {
basemap: "gray",
center: [-119.417, 36.778], // lon, lat
zoom: 7
});
var search = new Search({
map: map
}, "search");
search.startup();
var directions = new Directions({
map: map
},"dir");
directions.startup();
});
</script>
</head>
<body class="claro">
<div data-dojo-type="dijit/layout/BorderContainer"
data-dojo-props="design:'headline', gutters:false"
style="width:100%;height:100%;">
<div data-dojo-type="dijit/layout/ContentPane"
data-dojo-props="region:'right'"
style="width:250px;">
<div id="dir"></div>
</div>
<div id="map"></div>
<div id="search"></div>
</div>
</body>
</html>
Solved! Go to Solution.
Donald,
I have made corrections to your code and comments. It is working now:
<!DOCTYPE html>
<html>
<!-- having lang="en" in the html tag was a major issue but I am not sure why-->
<head>
  <meta charset="UTF-8">
  <title>MyOwn</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
  <link rel="stylesheet" href="https://js.arcgis.com/3.22/dijit/themes/claro/claro.css">
  <link rel="stylesheet" href="https://js.arcgis.com/3.22/esri/css/esri.css">
  <style>
    html,
    body,
    #map {
      height: 100%;
      width: 100%;
      margin: 0;
      padding: 0;
    }
    #search {
      display: block;
      position: absolute;
      z-index: 3;
      top: 20px;
      left: 75px;
    }
  </style>
  <script src="https://js.arcgis.com/3.22/"></script>
  <script>
    require([
      "esri/urlUtils", "esri/map", "esri/dijit/Directions", "esri/dijit/Search", "dojo/parser", "dijit/layout/BorderContainer",
      "dijit/layout/ContentPane", "dojo/domReady!"
    ], function(urlUtils, Map, Directions, Search, parser) {
      parser.parse();
      urlUtils.addProxyRule({
        urlPrefix: "route.arcgis.com",
        proxyUrl: "/sproxy/"
      });
      urlUtils.addProxyRule({
        urlPrefix: "traffic.arcgis.com",
        proxyUrl: "/sproxy/"
      });
      var map = new Map("map", {
        basemap: "gray",
        center: [-119.417, 36.778], // lon, lat
        zoom: 7
      });
      var search = new Search({
        map: map
      }, "search");
      search.startup();
      var directions = new Directions({
        map: map
      }, "dir");
      directions.startup();
    });
  </script>
</head>
<body class="claro">
  <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters:false" style="width:100%;height:100%;">
    <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'right'" style="width:250px;">
      <div id="dir"></div>
    </div>
<!-- If you do not put the map in a ContentPane then it does not know to share the screen with the directions dijit content Pane -->
    <div id="map" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'">
    </div>
    <div id="search"></div>
  </div>
</body>
</html>
					
				
			
			
				
			
			
				
			
			
				
			
			
			
			
			
		Donald,
I have made corrections to your code and comments. It is working now:
<!DOCTYPE html>
<html>
<!-- having lang="en" in the html tag was a major issue but I am not sure why-->
<head>
  <meta charset="UTF-8">
  <title>MyOwn</title>
  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
  <meta name="viewport" content="initial-scale=1, maximum-scale=1,user-scalable=no">
  <link rel="stylesheet" href="https://js.arcgis.com/3.22/dijit/themes/claro/claro.css">
  <link rel="stylesheet" href="https://js.arcgis.com/3.22/esri/css/esri.css">
  <style>
    html,
    body,
    #map {
      height: 100%;
      width: 100%;
      margin: 0;
      padding: 0;
    }
    #search {
      display: block;
      position: absolute;
      z-index: 3;
      top: 20px;
      left: 75px;
    }
  </style>
  <script src="https://js.arcgis.com/3.22/"></script>
  <script>
    require([
      "esri/urlUtils", "esri/map", "esri/dijit/Directions", "esri/dijit/Search", "dojo/parser", "dijit/layout/BorderContainer",
      "dijit/layout/ContentPane", "dojo/domReady!"
    ], function(urlUtils, Map, Directions, Search, parser) {
      parser.parse();
      urlUtils.addProxyRule({
        urlPrefix: "route.arcgis.com",
        proxyUrl: "/sproxy/"
      });
      urlUtils.addProxyRule({
        urlPrefix: "traffic.arcgis.com",
        proxyUrl: "/sproxy/"
      });
      var map = new Map("map", {
        basemap: "gray",
        center: [-119.417, 36.778], // lon, lat
        zoom: 7
      });
      var search = new Search({
        map: map
      }, "search");
      search.startup();
      var directions = new Directions({
        map: map
      }, "dir");
      directions.startup();
    });
  </script>
</head>
<body class="claro">
  <div data-dojo-type="dijit/layout/BorderContainer" data-dojo-props="design:'headline', gutters:false" style="width:100%;height:100%;">
    <div data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'right'" style="width:250px;">
      <div id="dir"></div>
    </div>
<!-- If you do not put the map in a ContentPane then it does not know to share the screen with the directions dijit content Pane -->
    <div id="map" data-dojo-type="dijit/layout/ContentPane" data-dojo-props="region:'center'">
    </div>
    <div id="search"></div>
  </div>
</body>
</html>