Maps are containers used to manage references to layers and basemaps. Views are used to display the map layers and handle user interactions, popups, widgets, and the map location.
Working with mapsMaps are created from the Map
class. Map
objects are always passed to a View
object. To display maps in 2D, use the MapView
class and to display maps in 3D, use the SceneView
class.
See Scenes (3D) in this guide for more information about working in 3D.
Create a new mapOne way to create a map is to make a new instance of the Map
class while specifying a basemap and optionally a collection of layers.
Use dark colors for code blocks Copy
1
2
3
4
5
6
7
8
9
10
11
const myMap = new Map({
// Create a Map object
basemap: "streets-vector",
layers: additionalLayers, // Optionally, add additional layers collection
});
const mapView = new MapView({
// The View for the Map object
map: myMap,
container: "mapDiv",
});
Note
Learn more about the different types of Layers you can add to a map.
Create a map from a web mapThe second way to create a map is to load a web map (for 2D maps) or a web scene (for 3D maps).
Web maps and web scenes are JSON structures that contain settings for a map or a scene. This includes settings for the basemap, layers, layer styling, popups, legends, labels, and more. They are typically created interactively with the ArcGIS Online map viewer or the ArcGIS Online scene viewer. ArcGIS Online or ArcGIS Enterprise assigns them a unique ID and stores them as portal items.
The WebMap
and WebScene
classes can be used to access and load web maps and web scenes by their unique ID. An item's ID can be identified in the URL in the map viewer and scene viewer or in the item page. The default portal is ArcGIS Online and the URL is https://www.arcgis.com
. If using ArcGIS Enterprise, the portal URL must be specified.
When the WebMap
object load a web map, all of the settings are automatically applied to the Map
. For example, the basemap and layers are set, the layer styles are applied, and the popups are defined for each layer.
Creating web maps interactively and loading them by unique ID is the fastest way to configure a Map
. Learn how to create and load web maps in the Create a web map tutorial.
Use dark colors for code blocks Copy
1
2
3
4
5
6
7
8
9
10
11
12
const webMap = new WebMap({
// Define the web map reference
portalItem: {
id: "237b9584339446a0b56317b5962a4971",
portal: "https://www.arcgis.com", // Default: The ArcGIS Online Portal
},
});
const view = new MapView({
map: webMap, // Load the web map
container: "viewDiv",
});
Note
Learn more in the Display a web map tutorial.
Working with ViewsThe primary role of the view is to display layers, popups, and UI widgets, handle user interactions, and to specify which portion of the world the map should be focused on (i.e. the "extent" of the map).
Create a viewThere are separate classes for creating views for maps and scenes: a MapView
and SceneView
class. A MapView
displays a 2D view, and a SceneView
displays a 3D view, of a Map
object.
For a map to be visible, a view object requires a Map
object and a String
identifying the id
attribute of a div
element or a div
element reference.
Use dark colors for code blocks Copy
1
2
3
4
5
const mapView = new MapView({
// Create MapView object
map: myMap,
container: "mapViewDiv",
});
Set the visible portion of the map
The initial position for the MapView
and SceneView
can be set by setting the center
and the zoom
or scale
properties when the view is created. The view position can also be updated after it is initialized by updating the properties programmatically.
Use dark colors for code blocks Copy
1
2
3
4
const view = new MapView({
center: [-112, 38], // The center of the map as lon/lat
zoom: 13, // Sets the zoom level of detail (LOD) to 13
});
Learn how to create 2D views in the Display a map tutorial.
Animate the view to a new positionThe goTo
method of MapView
also changes the location of the view but provides the additional option to transition smoothly. This technique is often used to "fly" from one location to another on the surface or to zoom to results of a search.
The goTo
method can accept a Geometry
, Graphic
, or Viewpoint
object. Additional options can control the animation.
Use dark colors for code blocks Copy
1
2
3
4
5
view.goTo(
// go to point with a custom animation duration
{ center: [-114, 39] },
{ duration: 5000 },
);
Interacting with the view
The view is also responsible for handling user interaction and displaying popups. The view provides multiple event handlers for user interactions such as mouse clicks, keyboard input, touch screen interactions, joysticks, and other input devices.
When a user clicks on the map, the default behavior is to show any popups that have been pre-configured in your layers. This behavior can also be approximated manually with the following code by listening for the click
event and using the hitTest()
method to find features where the user clicked.
Use dark colors for code blocks Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
view.popupEnabled = false; // Disable the default popup behavior
view.on("click", function (event) {
// Listen for the click event
view.hitTest(event).then(function (hitTestResults) {
// Search for features where the user clicked
if (hitTestResults.results) {
view.openPopup({
// open a popup to show some of the results
location: event.mapPoint,
title: "Hit Test Results",
content: hitTestResults.results.length + "Features Found",
});
}
});
});
Note
Learn more about about view events and manually configuring popups.
The view is also a container for overlaying widgets and HTML Elements. The view.ui
provides a DefaultUI container that is used to display the default widgets for the view. Additional widgets and HTML Elements can also be added to the view by using the view.ui.add
method. The code snippet below demonstrates adding widgets that allows users to search for an address or place.
Use dark colors for code blocks Copy
1
2
3
4
5
6
7
8
var searchWidget = new Search({
view: view,
});
// Add the search widget to the top right corner of the view
view.ui.add(searchWidget, {
position: "top-right",
});
Note
Learn more about adding widgets to the view.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4