UNPKG

1.59 kBJavaScriptView Raw
1// NOCOMPILE
2// this example uses turf.js for which we don't have an externs file.
3goog.require('ol.Map');
4goog.require('ol.View');
5goog.require('ol.format.GeoJSON');
6goog.require('ol.layer.Tile');
7goog.require('ol.layer.Vector');
8goog.require('ol.proj');
9goog.require('ol.source.OSM');
10goog.require('ol.source.Vector');
11
12
13var source = new ol.source.Vector();
14fetch('data/geojson/roads-seoul.geojson').then(function(response) {
15 return response.json();
16}).then(function(json) {
17 var format = new ol.format.GeoJSON();
18 var features = format.readFeatures(json);
19 var street = features[0];
20
21 // convert to a turf.js feature
22 var turfLine = format.writeFeatureObject(street);
23
24 // show a marker every 200 meters
25 var distance = 0.2;
26
27 // get the line length in kilometers
28 var length = turf.lineDistance(turfLine, 'kilometers');
29 for (var i = 1; i <= length / distance; i++) {
30 var turfPoint = turf.along(turfLine, i * distance, 'kilometers');
31
32 // convert the generated point to a OpenLayers feature
33 var marker = format.readFeature(turfPoint);
34 marker.getGeometry().transform('EPSG:4326', 'EPSG:3857');
35 source.addFeature(marker);
36 }
37
38 street.getGeometry().transform('EPSG:4326', 'EPSG:3857');
39 source.addFeature(street);
40});
41var vectorLayer = new ol.layer.Vector({
42 source: source
43});
44
45var rasterLayer = new ol.layer.Tile({
46 source: new ol.source.OSM()
47});
48
49var map = new ol.Map({
50 layers: [rasterLayer, vectorLayer],
51 target: document.getElementById('map'),
52 view: new ol.View({
53 center: ol.proj.fromLonLat([126.980366, 37.526540]),
54 zoom: 15
55 })
56});