-
Notifications
You must be signed in to change notification settings - Fork 5
/
lecture11_Mod02_b_01_b.md.html
452 lines (452 loc) · 44.1 KB
/
lecture11_Mod02_b_01_b.md.html
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
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta charset="utf-8" />
<meta name="generator" content="pandoc" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
<meta name="author" content="Karl Benedict" />
<title>Geography 485L/585L - Internet Mapping</title>
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
span.underline{text-decoration: underline;}
div.column{display: inline-block; vertical-align: top; width: 50%;}
</style>
<style type="text/css">
a.sourceLine { display: inline-block; line-height: 1.25; }
a.sourceLine { pointer-events: none; color: inherit; text-decoration: inherit; }
a.sourceLine:empty { height: 1.2em; position: absolute; }
.sourceCode { overflow: visible; }
code.sourceCode { white-space: pre; position: relative; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
code.sourceCode { white-space: pre-wrap; }
a.sourceLine { text-indent: -1em; padding-left: 1em; }
}
pre.numberSource a.sourceLine
{ position: relative; }
pre.numberSource a.sourceLine:empty
{ position: absolute; }
pre.numberSource a.sourceLine::before
{ content: attr(data-line-number);
position: absolute; left: -5em; text-align: right; vertical-align: baseline;
border: none; pointer-events: all;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
a.sourceLine::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<link rel="stylesheet" href="page.css">
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
<![endif]-->
</head>
<body>
<header>
<h1 class="title">Geography 485L/585L - Internet Mapping</h1>
<p class="author">Karl Benedict</p>
<p class="date">Spring 2018</p>
</header>
<!---------------------------------------------------------------------------->
<!-- Week 11 ----------------------------------------------------------------->
<!-- Lecture 02 b 01 b ------------------------------------------------------->
<!-- Web-based Mapping Clients------------------------------------------------>
<!-- OpenLayers Javascript Framework------------------------------------------>
<!---------------------------------------------------------------------------->
<h1 id="week-11---module-2b---openlayers-javascript-framework">Week 11 - Module 2b - OpenLayers Javascript Framework</h1>
<h3 id="overview" class="module02b01b">Overview</h3>
<ul>
<li><p>More detailed Map Object Options</p></li>
<li><p>More detailed Layer Object Options</p></li>
<li><p>Additional Map Layer Types - With Examples</p></li>
</ul>
<h3 id="map-object-options">Map Object Options</h3>
<ul>
<li>Map Object Options <a href="http://openlayers.org/en/latest/apidoc/ol.Map.html">API Reference</a></li>
<li>View Object Options <a href="http://openlayers.org/en/latest/apidoc/ol.View.html">API Reference</a></li>
<li>Layer Object Options
<ul>
<li><code>ol.layer.Tile</code> <a href="http://openlayers.org/en/latest/apidoc/ol.layer.Tile.html">API Reference</a></li>
<li><code>ol.layer.Image</code> <a href="http://openlayers.org/en/latest/apidoc/ol.layer.Image.html">API Reference</a></li>
<li><code>ol.layer.Vector</code> <a href="http://openlayers.org/en/latest/apidoc/ol.layer.Vector.html">API Reference</a></li>
<li><code>ol.layer.VectorTile</code> <a href="http://openlayers.org/en/latest/apidoc/ol.layer.VectorTile.html">API Reference</a></li>
<li><code>ol.layer.Heatmap</code> <a href="http://openlayers.org/en/latest/apidoc/ol.layer.Heatmap.html">API Reference</a></li>
</ul></li>
</ul>
<p>A variety of strategies for constructing a new <code>OpenLayers.Map</code> object</p>
<div class="codeTable inflow">
<div class="sourceCode" id="OpenLayers_02_Map_options"><pre class="sourceCode numberSource html numberLines"><code class="sourceCode html"><a class="sourceLine" id="OpenLayers_02_Map_options-1" data-line-number="1">// create a map with minimum required elements and default </a>
<a class="sourceLine" id="OpenLayers_02_Map_options-2" data-line-number="2">// options in an element with the id "map1"</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-3" data-line-number="3">var myMap = new ol.Map({</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-4" data-line-number="4"> target: 'map1',</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-5" data-line-number="5"> // a map without layers can be defined and in that case a map with no layers</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-6" data-line-number="6"> // will be rendered</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-7" data-line-number="7"> layers: [</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-8" data-line-number="8"> new ol.layer.Tile({</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-9" data-line-number="9"> source: new ol.source.OSM()</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-10" data-line-number="10"> })</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-11" data-line-number="11"> ],</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-12" data-line-number="12"> view: new ol.View({</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-13" data-line-number="13"> center: ol.proj.fromLonLat([-106.624083,35.08427]),</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-14" data-line-number="14"> zoom: 18</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-15" data-line-number="15"> })</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-16" data-line-number="16"> });</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-17" data-line-number="17"></a>
<a class="sourceLine" id="OpenLayers_02_Map_options-18" data-line-number="18"></a>
<a class="sourceLine" id="OpenLayers_02_Map_options-19" data-line-number="19">// create a map with options specified in a separate 'options' variable and</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-20" data-line-number="20">// included by reference in the code to create the new map object</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-21" data-line-number="21">var options = {</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-22" data-line-number="22"> // required options</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-23" data-line-number="23"> target:'map2',</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-24" data-line-number="24"> layers: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-25" data-line-number="25"> view: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-26" data-line-number="26"> </a>
<a class="sourceLine" id="OpenLayers_02_Map_options-27" data-line-number="27"> // optional options - only include those that you need</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-28" data-line-number="28"> controls: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-29" data-line-number="29"> pixelRatio: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-30" data-line-number="30"> interactions: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-31" data-line-number="31"> keyboardEventTarget: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-32" data-line-number="32"> loadTilesWhileAnimating: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-33" data-line-number="33"> loadTilesWhileInteracting: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-34" data-line-number="34"> logo: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-35" data-line-number="35"> overlays: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-36" data-line-number="36"> renderer: ... </a>
<a class="sourceLine" id="OpenLayers_02_Map_options-37" data-line-number="37">};</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-38" data-line-number="38">var map = new ol.Map(options);</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-39" data-line-number="39"></a>
<a class="sourceLine" id="OpenLayers_02_Map_options-40" data-line-number="40">// map with non-default options - same as above but with a single argument</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-41" data-line-number="41">var map = new ol.Map({</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-42" data-line-number="42"> // required options</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-43" data-line-number="43"> target:'map2',</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-44" data-line-number="44"> layers: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-45" data-line-number="45"> view: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-46" data-line-number="46"> </a>
<a class="sourceLine" id="OpenLayers_02_Map_options-47" data-line-number="47"> // optional options - only include those that you need</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-48" data-line-number="48"> controls: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-49" data-line-number="49"> pixelRatio: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-50" data-line-number="50"> interactions: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-51" data-line-number="51"> keyboardEventTarget: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-52" data-line-number="52"> loadTilesWhileAnimating: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-53" data-line-number="53"> loadTilesWhileInteracting: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-54" data-line-number="54"> logo: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-55" data-line-number="55"> overlays: ...,</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-56" data-line-number="56"> renderer: ... </a>
<a class="sourceLine" id="OpenLayers_02_Map_options-57" data-line-number="57">});</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-58" data-line-number="58"></a>
<a class="sourceLine" id="OpenLayers_02_Map_options-59" data-line-number="59">// the following commands can be executed to add, set or remove the layers in a map </a>
<a class="sourceLine" id="OpenLayers_02_Map_options-60" data-line-number="60">// after a map object has been created</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-61" data-line-number="61"></a>
<a class="sourceLine" id="OpenLayers_02_Map_options-62" data-line-number="62">map.addLayer(layer)</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-63" data-line-number="63">map.removeLayer(layer)</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-64" data-line-number="64">map.setLayerGroup(layerGroup)</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-65" data-line-number="65"></a>
<a class="sourceLine" id="OpenLayers_02_Map_options-66" data-line-number="66">// the view of a layer can be created or modified after the map object has been </a>
<a class="sourceLine" id="OpenLayers_02_Map_options-67" data-line-number="67">// created by using the following command</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-68" data-line-number="68"></a>
<a class="sourceLine" id="OpenLayers_02_Map_options-69" data-line-number="69">map.setView()</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-70" data-line-number="70"></a>
<a class="sourceLine" id="OpenLayers_02_Map_options-71" data-line-number="71">// the target DOM object for the map object can be set or changed using </a>
<a class="sourceLine" id="OpenLayers_02_Map_options-72" data-line-number="72">// the following command</a>
<a class="sourceLine" id="OpenLayers_02_Map_options-73" data-line-number="73"></a>
<a class="sourceLine" id="OpenLayers_02_Map_options-74" data-line-number="74">map.setTarget()</a></code></pre></div>
</div>
<h3 id="layer-object-options">Layer Object Options</h3>
<p>Layer Types and a subset of sources for each type</p>
<ul>
<li><code>ol.layer.Image</code> - a single map image is rendered for this layer type
<ul>
<li><code>ol.source.ImageMapGuide</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.ImageMapGuide.html">API</a> source is a <a href="https://mapguide.osgeo.org/">MapGuide</a> server hosting data of interest.</li>
<li><code>ol.source.ImageStatic</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.ImageStatic.html">API</a> source renders a specified static image file within a specified extent within the map.</li>
<li><code>ol.source.ImageWMS</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.ImageWMS.html">API</a> source retrieves a single map image from the specified OGC Web Map Service (WMS).</li>
<li><code>ol.source.ImageArcGISRest</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.ImageArcGISRest.html">API</a> source retrieves a single map image from the specified ArcGIS REST service.</li>
<li><code>ol.source.ImageCanvas</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.ImageCanvas.html">API</a> source places the result of a <code>canvasFunction</code> within the defined layer element.</li>
<li><code>ol.source.Raster</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.Raster.html">API</a> source places the result of a raster <code>operation</code> within the defined layer element.</li>
</ul></li>
<li><code>ol.layer.Tile</code> - map images in a tiled grid are rendered for this layer type
<ul>
<li><code>ol.source.BingMaps</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.BingMaps.html">API</a> source is Bing map or image service</li>
<li><code>ol.source.Stamen</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.Stamen.html">API</a> source is one of the layer types supported by the Stamen image service</li>
<li><code>ol.source.CartoDB</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.CartoDB.html">API</a> source is the <a href="https://carto.com">CartoDB</a> API</li>
<li><code>ol.source.TileArcGISRest</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.TileArcGISRest.html">API</a> source is an ArcGIS REST map or image service</li>
<li><code>ol.source.TileWMS</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.TileWMS.html">API</a> source is an OGC Web Map Service (WMS)</li>
<li><code>ol.source.TileJSON</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.TileJSON.html">API</a> source is the TileJSON format</li>
<li><code>ol.source.WMTS</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.WMTS.html">API</a> source is an OGC Web Map Tile Service (<a href="http://www.opengeospatial.org/standards/wmts">WMTS</a>)</li>
<li><code>ol.source.XYZ</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.XYZ.html">API</a> source is a collection of tiles that are referenced by URLs that follow a template for specifying x-, y-, and z-locations.</li>
<li><code>ol.source.Zoomify</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.Zoomify.html">API</a> source is a collection of tiles in the <a href="http://www.zoomify.com/index.html">Zoomify</a> format.</li>
</ul></li>
<li><code>ol.layer.VectorTile</code> - map content is delivered vector data that has been divided into a tile grid and cannot be edited
<ul>
<li><code>ol.source.VectorTile</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.layer.VectorTile.html">API</a> source delivers vector data tiles for rendering in the client</li>
</ul></li>
<li><code>ol.layer.Vector</code> - map content is delivered as vector data that is rendered by the client and may be edited within the client
<ul>
<li><code>ol.source.Vector</code> - <a href="http://openlayers.org/en/latest/apidoc/ol.source.Vector.html">API</a> the source for vector feature(s) that constitute a vector layer. The individual features are <a href="http://openlayers.org/en/latest/apidoc/ol.Feature.html"><code>ol.Feature</code></a> objects that consist of at least one <a href="http://openlayers.org/en/latest/apidoc/ol.geom.html">geometry</a>, or a <a href="http://openlayers.org/en/latest/apidoc/ol.geom.GeometryCollection.html">collection</a> of geometries and any additional attributes that are associated with each feature.</li>
</ul></li>
</ul>
<p>Common Pattern of <a href="http://openlayers.org/en/latest/apidoc/ol.layer.Base.html">Layer Object</a> Creation (varies some depending upon the specific layer type)</p>
<div class="codeTable inflow">
<div class="sourceCode" id="OpenLayers_02_Layer_options"><pre class="sourceCode numberSource html numberLines"><code class="sourceCode html"><a class="sourceLine" id="OpenLayers_02_Layer_options-1" data-line-number="1">var layer = new ol.layer.***({</a>
<a class="sourceLine" id="OpenLayers_02_Layer_options-2" data-line-number="2"> source: new ol.source.***({</a>
<a class="sourceLine" id="OpenLayers_02_Layer_options-3" data-line-number="3"> ...</a>
<a class="sourceLine" id="OpenLayers_02_Layer_options-4" data-line-number="4"> }),</a>
<a class="sourceLine" id="OpenLayers_02_Layer_options-5" data-line-number="5"> other options ...</a>
<a class="sourceLine" id="OpenLayers_02_Layer_options-6" data-line-number="6">})</a></code></pre></div>
</div>
<h3 id="additional-map-and-layer-object-functions-events">Additional Map and Layer Object Functions & Events</h3>
<p>Both Map and Layer Objects have a number of associated functions as well</p>
<ul>
<li>Retrieving object properties programmatically with <code>Get</code> functions.</li>
<li>Modifying existing object properties with <code>Set</code> functions</li>
<li>Map destruction, and reconfiguration</li>
<li>Linkage of object events with Javascript functions</li>
</ul>
<h3 id="wms-layer-configuration">WMS Layer Configuration</h3>
<p>Some key issues to be aware of when using the two WMS supporting layers (<code>ol.layer.Tile</code>, and <code>ol.layer.Image</code>) and their associated WMS sources (<code>ol.source.TileWMS</code> and <code>ol.source.ImageWMS</code> respectively) include:</p>
<ul>
<li>The <em>projection</em> of the map object must be supported by the included WMS service (review the WMS GetCapabilities response to see what projections are supported by the service). If you don’t specify a <code>projection</code> parameter as part of the map object’s <code>view</code> property a default <em>Web Mercator</em> (EPSG:3857) projection is used for the map. Information about how to define and set map projections in OpenLayers is found <a href="http://openlayers.org/en/latest/doc/faq.html#how-do-i-change-the-projection-of-my-map-">here</a></li>
<li>The <em>layers</em> parameter as part of the <code>params</code> option must be provided as part of the server-related property list (the layer names may also be found in the GetCapabilities response)</li>
<li>Other WMS parameters (again as part of the <code>params</code> option) may be provided as well to “adjust” the request automatically generated by OpenLayers</li>
<li>Use of a tiled WMS may produce unwanted repetition of labels included in the WMS. If that is the case you can use a single-image <code>ol.layer.Image</code> layer type to allow the WMS server to handle the distribution of layers across the entire map image instead of including them in each individual map image.</li>
</ul>
<p>Sample WMS Layer Object Creation</p>
<div class="codeTable inflow">
<div class="sourceCode" id="OpenLayers_02_WmsLayer_options"><pre class="sourceCode numberSource html numberLines"><code class="sourceCode html"><a class="sourceLine" id="OpenLayers_02_WmsLayer_options-1" data-line-number="1">// OpenLayers_03_wms.js</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-2" data-line-number="2"></a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-3" data-line-number="3">// OpenLayers_03_wms.js</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-4" data-line-number="4"></a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-5" data-line-number="5">///////////////////////////////////////////////////////////////////////////////</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-6" data-line-number="6">// define layer objects</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-7" data-line-number="7"></a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-8" data-line-number="8">var basemap_tiled = new ol.layer.Tile({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-9" data-line-number="9"> source: new ol.source.TileWMS({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-10" data-line-number="10"> url: 'http://internetmapping.net:8080/geoserver/wms?',</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-11" data-line-number="11"> params: {</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-12" data-line-number="12"> LAYERS: 'kbene:BMNG_west',</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-13" data-line-number="13"> FORMAT: 'image/png',</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-14" data-line-number="14"> TRANSPARENT: true</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-15" data-line-number="15"> },</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-16" data-line-number="16"> attributions: [</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-17" data-line-number="17"> new ol.Attribution({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-18" data-line-number="18"> html: 'Data provided by the GEOG x85 GeoServer.'</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-19" data-line-number="19"> })</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-20" data-line-number="20"> ]</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-21" data-line-number="21"> })</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-22" data-line-number="22">})</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-23" data-line-number="23"></a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-24" data-line-number="24">var basemap_single = new ol.layer.Image({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-25" data-line-number="25"> source: new ol.source.ImageWMS({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-26" data-line-number="26"> url: 'http://internetmapping.net:8080/geoserver/wms?',</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-27" data-line-number="27"> params: {</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-28" data-line-number="28"> LAYERS: 'kbene:BMNG_west',</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-29" data-line-number="29"> FORMAT: 'image/png',</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-30" data-line-number="30"> TRANSPARENT: true</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-31" data-line-number="31"> },</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-32" data-line-number="32"> attributions: [</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-33" data-line-number="33"> new ol.Attribution({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-34" data-line-number="34"> html: 'Data provided by the GEOG x85 GeoServer.'</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-35" data-line-number="35"> })</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-36" data-line-number="36"> ]</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-37" data-line-number="37"> })</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-38" data-line-number="38">})</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-39" data-line-number="39"></a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-40" data-line-number="40">var states_single = new ol.layer.Image({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-41" data-line-number="41"> source: new ol.source.ImageWMS({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-42" data-line-number="42"> attributions: new ol.Attribution({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-43" data-line-number="43"> html: 'Data provided by the GEOG x85 GeoServer.'</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-44" data-line-number="44"> }),</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-45" data-line-number="45"> params: {'LAYERS':'kbene:statep010'},</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-46" data-line-number="46"> url: 'http://internetmapping.net:8080/geoserver/wms?',</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-47" data-line-number="47"> serverType: 'geoserver'</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-48" data-line-number="48"> })</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-49" data-line-number="49">})</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-50" data-line-number="50"></a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-51" data-line-number="51">var states_tiled = new ol.layer.Tile({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-52" data-line-number="52"> source: new ol.source.TileWMS({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-53" data-line-number="53"> attributions: new ol.Attribution({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-54" data-line-number="54"> html: 'State Boundary Restructured - USGS, National Atlas Release 5-14-12'</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-55" data-line-number="55"> }),</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-56" data-line-number="56"> params: {'LAYERS':'kbene:statep010'},</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-57" data-line-number="57"> url: 'http://internetmapping.net:8080/geoserver/wms?',</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-58" data-line-number="58"> serverType: 'geoserver'</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-59" data-line-number="59"> })</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-60" data-line-number="60">})</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-61" data-line-number="61"></a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-62" data-line-number="62"></a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-63" data-line-number="63"></a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-64" data-line-number="64">///////////////////////////////////////////////////////////////////////////////</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-65" data-line-number="65">// create our base map objects </a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-66" data-line-number="66">var singleMap = new ol.Map({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-67" data-line-number="67"> target: 'map_image',</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-68" data-line-number="68"> layers: [basemap_single,states_single], //[basemap_single,states_single]</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-69" data-line-number="69"> view: new ol.View({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-70" data-line-number="70"> center: ol.proj.fromLonLat([-98.58,39.83]), // the approximate geographic center of the continental US</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-71" data-line-number="71"> zoom: 3,</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-72" data-line-number="72"> projection: 'EPSG:3857'</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-73" data-line-number="73"> })</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-74" data-line-number="74"> });</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-75" data-line-number="75"></a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-76" data-line-number="76"></a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-77" data-line-number="77">var tiledMap = new ol.Map({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-78" data-line-number="78"> target: 'map_tiled',</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-79" data-line-number="79"> layers: [basemap_tiled,states_tiled], //[basemap_tiled,states_tiled]</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-80" data-line-number="80"> view: new ol.View({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-81" data-line-number="81"> center: ol.proj.fromLonLat([-98.58,39.83]), // the approximate geographic center of the continental US</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-82" data-line-number="82"> zoom: 3,</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-83" data-line-number="83"> projection: 'EPSG:3857'</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-84" data-line-number="84"> })</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-85" data-line-number="85"> });</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-86" data-line-number="86"> </a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-87" data-line-number="87">var mixedMap = new ol.Map({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-88" data-line-number="88"> target: 'map_mixed',</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-89" data-line-number="89"> layers: [basemap_tiled,states_single], //[basemap_tiled,states_single]</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-90" data-line-number="90"> view: new ol.View({</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-91" data-line-number="91"> center: ol.proj.fromLonLat([-98.58,39.83]), // the approximate geographic center of the continental US</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-92" data-line-number="92"> zoom: 3,</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-93" data-line-number="93"> projection: 'EPSG:3857'</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-94" data-line-number="94"> })</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-95" data-line-number="95"> });</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-96" data-line-number="96"></a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-97" data-line-number="97">///////////////////////////////////////////////////////////////////////////////</a>
<a class="sourceLine" id="OpenLayers_02_WmsLayer_options-98" data-line-number="98"></a></code></pre></div>
</div>
<p>Example: <a href="https://github.com/karlbenedict/GEOG485-585/blob/master/sample-files/OpenLayers/OpenLayers_03_wms.html">HTML</a>, <a href="https://github.com/karlbenedict/GEOG485-585/blob/master/sample-files/OpenLayers/js/OpenLayers_03_wms.js">Javascript</a></p>
<h3 id="vector-layer-configuration">Vector Layer Configuration</h3>
<p>Vector layers support</p>
<ul>
<li>External Data in a Variety of supported <a href="http://openlayers.org/en/latest/apidoc/ol.format.html">formats</a> for both <em>reading</em> and <em>writing</em> (just a sample): <a href="http://openlayers.org/en/latest/apidoc/ol.format.GML2.html">GML 2</a> and <a href="http://openlayers.org/en/latest/apidoc/ol.format.GML3.html">GML 3</a>, <a href="http://openlayers.org/en/latest/apidoc/ol.format.GPX.html">GPX</a>, <a href="http://openlayers.org/en/latest/apidoc/ol.format.GeoJSON.html">GeoJSON</a>, <a href="http://openlayers.org/en/latest/apidoc/ol.format.KML.html">KML</a>, <a href="http://openlayers.org/en/latest/apidoc/ol.format.WFS.html">WFS</a>, <a href="http://openlayers.org/en/latest/apidoc/ol.format.WKT.html">WKT</a>, <a href="http://openlayers.org/en/latest/apidoc/ol.format.OSMXML.html">Open Streetmap XML</a></li>
<li>Directly encoded <a href="http://openlayers.org/en/latest/apidoc/ol.geom.html">geometries</a>: Circle, Geometry, GeometryCollection, LinearRing, LineString, MultiLineString, MultiPoint, MultiPolygon, Point, Polygon, SimpleGeometry</li>
<li>User created features, including support for interactive editing of features</li>
<li><a href="http://openlayers.org/en/latest/apidoc/ol.style.html">Styling</a> of Vector features</li>
</ul>
<div class="codeTable inflow">
<p>Sample Point Feature Object creation</p>
<div class="sourceCode" id="OpenLayers_02_VectorLayer_options01"><pre class="sourceCode numberSource html numberLines"><code class="sourceCode html"><a class="sourceLine" id="OpenLayers_02_VectorLayer_options01-1" data-line-number="1">var classroomCoord = [-106.624073,35.084280]</a>
<a class="sourceLine" id="OpenLayers_02_VectorLayer_options01-2" data-line-number="2">var officeCoord = [-106.624899,35.084506]</a>
<a class="sourceLine" id="OpenLayers_02_VectorLayer_options01-3" data-line-number="3"></a>
<a class="sourceLine" id="OpenLayers_02_VectorLayer_options01-4" data-line-number="4">var classroomPoint = new ol.geom.Point(ol.proj.fromLonLat(classroomCoord, projection));</a>
<a class="sourceLine" id="OpenLayers_02_VectorLayer_options01-5" data-line-number="5">var officePoint = new ol.geom.Point(ol.proj.fromLonLat(officeCoord, projection));</a></code></pre></div>
<p>Sample KML Layer Object creation with style</p>
<div class="sourceCode" id="OpenLayers_02_KMLayer_options01"><pre class="sourceCode numberSource html numberLines"><code class="sourceCode html"><a class="sourceLine" id="OpenLayers_02_KMLayer_options01-1" data-line-number="1">///////////////////////////////////////////////////////////////////////////////</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-2" data-line-number="2">// define some styles</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-3" data-line-number="3"></a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-4" data-line-number="4">var block_color = [0,255,0,.1]</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-5" data-line-number="5">var block_line_color = [0,255,0,1]</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-6" data-line-number="6">var county_color = [124,124,255,.25]</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-7" data-line-number="7">var county_line_color = [124,124,255,1]</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-8" data-line-number="8"></a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-9" data-line-number="9">var county_style = new ol.style.Style({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-10" data-line-number="10"> fill: new ol.style.Fill({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-11" data-line-number="11"> color: county_color</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-12" data-line-number="12"> }),</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-13" data-line-number="13"> stroke: new ol.style.Stroke({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-14" data-line-number="14"> color: county_line_color,</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-15" data-line-number="15"> width: 2</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-16" data-line-number="16"> }),</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-17" data-line-number="17">});</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-18" data-line-number="18"></a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-19" data-line-number="19">var block_style = new ol.style.Style({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-20" data-line-number="20"> fill: new ol.style.Fill({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-21" data-line-number="21"> color: block_color</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-22" data-line-number="22"> }),</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-23" data-line-number="23"> stroke: new ol.style.Stroke({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-24" data-line-number="24"> color: block_line_color,</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-25" data-line-number="25"> width: 1</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-26" data-line-number="26"> }),</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-27" data-line-number="27">});</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-28" data-line-number="28">///////////////////////////////////////////////////////////////////////////////</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-29" data-line-number="29"></a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-30" data-line-number="30">// unstyled layers</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-31" data-line-number="31"></a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-32" data-line-number="32">var blocks_kml = new ol.layer.Vector({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-33" data-line-number="33"> source: new ol.source.Vector({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-34" data-line-number="34"> url: 'https://s3.amazonaws.com/kkb-web/data/tl_2010_35001_tabblock10.kml',</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-35" data-line-number="35"> projection: projection,</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-36" data-line-number="36"> format: new ol.format.KML()</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-37" data-line-number="37"> })</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-38" data-line-number="38">})</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-39" data-line-number="39"></a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-40" data-line-number="40">var counties_kml = new ol.layer.Vector({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-41" data-line-number="41"> source: new ol.source.Vector({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-42" data-line-number="42"> url: 'https://s3.amazonaws.com/kkb-web/data/2007fe_35_county00.kml',</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-43" data-line-number="43"> projection: projection,</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-44" data-line-number="44"> format: new ol.format.KML()</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-45" data-line-number="45"> })</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-46" data-line-number="46">})</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-47" data-line-number="47"></a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-48" data-line-number="48"></a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-49" data-line-number="49">// styled layers </a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-50" data-line-number="50"></a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-51" data-line-number="51">var counties_kml_styled = new ol.layer.Vector({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-52" data-line-number="52"> source: new ol.source.Vector({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-53" data-line-number="53"> url: 'https://s3.amazonaws.com/kkb-web/data/2007fe_35_county00.kml',</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-54" data-line-number="54"> projection: projection,</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-55" data-line-number="55"> format: new ol.format.KML({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-56" data-line-number="56"> extractStyles:false</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-57" data-line-number="57"> })</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-58" data-line-number="58"> }),</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-59" data-line-number="59"> style: county_style</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-60" data-line-number="60">})</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-61" data-line-number="61"></a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-62" data-line-number="62">var blocks_kml_styled = new ol.layer.Vector({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-63" data-line-number="63"> source: new ol.source.Vector({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-64" data-line-number="64"> url: 'https://s3.amazonaws.com/kkb-web/data/tl_2010_35001_tabblock10.kml',</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-65" data-line-number="65"> projection: projection,</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-66" data-line-number="66"> format: new ol.format.KML({</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-67" data-line-number="67"> extractStyles:false</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-68" data-line-number="68"> })</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-69" data-line-number="69"> }),</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-70" data-line-number="70"> style: block_style</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-71" data-line-number="71">})</a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-72" data-line-number="72"></a>
<a class="sourceLine" id="OpenLayers_02_KMLayer_options01-73" data-line-number="73"></a></code></pre></div>
</div>
<p>Example: <a href="https://github.com/karlbenedict/GEOG485-585/blob/master/sample-files/OpenLayers/OpenLayers_04_vector.html">HTML</a>, <a href="https://github.com/karlbenedict/GEOG485-585/blob/master/sample-files/OpenLayers/js/OpenLayers_04_vector.js">Javascript</a></p>
<hr />
<section>
<div class="license">
<a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-sa/4.0/88x31.png" /></a><br />This work by <span data-xmlns:cc="http://creativecommons.org/ns#" data-property="cc:attributionName">Karl Benedict</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-sa/4.0/">Creative Commons Attribution-ShareAlike 4.0 International License</a>.
</div>
</section>
</body>
</html>