-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathmap.js
More file actions
117 lines (100 loc) · 3.02 KB
/
map.js
File metadata and controls
117 lines (100 loc) · 3.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
// dependencies
require([
"esri/Map",
"esri/views/SceneView",
"esri/widgets/CoordinateConversion",
"esri/widgets/Expand",
"esri/widgets/BasemapGallery",
"esri/widgets/Search",
"esri/widgets/DirectLineMeasurement3D",
"esri/widgets/AreaMeasurement3D",
"dojo/domReady!"
], function(Map, SceneView, CoordinateConversion, Expand, BasemapGallery, Search, DirectLineMeasurement3D, AreaMeasurement3D) {
var activeWidget = null;
var map = new Map({
basemap: "osm"
});
var view = new SceneView({
container: "viewDiv",
map: map,
center: [-98.579501, 39.828379],
zoom: 5,
});
var basemapGallery = new BasemapGallery({
view: view,
container: document.createElement("div")
});
// expand instance to show basemaps
var bgExpand = new Expand({
view: view,
content: basemapGallery.container,
expandIconClass: "esri-icon-basemap"
});
var ccWidget = new CoordinateConversion({
view: view
});
var searchWidget = new Search({
view: view
});
view.ui.add(ccWidget, "bottom-left");
view.ui.add(searchWidget, {
position: "top-right"
});
view.ui.add(bgExpand, "top-right");
view.ui.add("measureBar", "bottom-right");
// event listeners
document.getElementById("distanceButton").addEventListener("click",
function() {
setActiveWidget(null);
if (!this.classList.contains('active')) {
setActiveWidget('distance');
} else {
setActiveButton(null);
}
});
document.getElementById("areaButton").addEventListener("click",
function() {
setActiveWidget(null);
if (!this.classList.contains('active')) {
setActiveWidget('area');
} else {
setActiveButton(null);
}
});
function setActiveWidget(type) {
switch (type) {
case "distance":
activeWidget = new DirectLineMeasurement3D({
view: view
});
view.ui.add(activeWidget, "bottom-right");
setActiveButton(document.getElementById('distanceButton'));
break;
case "area":
activeWidget = new AreaMeasurement3D({
view: view
});
view.ui.add(activeWidget, "bottom-right");
setActiveButton(document.getElementById('areaButton'));
break;
case null:
if (activeWidget) {
view.ui.remove(activeWidget);
activeWidget.destroy();
activeWidget = null;
}
break;
}
}
function setActiveButton(selectedButton) {
// focus the view to activate keyboard shortcuts for sketching
view.focus();
var elements = document.getElementsByClassName("active");
for (var i = 0; i < elements.length; i++) {
elements[i].classList.remove("active");
}
if (selectedButton) {
selectedButton.classList.add("active");
}
}
});