# 二.turf.js
前言
Turf.js:JavaScript 空间分析库,由 Mapbox 提供,Turf 实现了常用的空间分析操作,例如生成缓冲区、计算等高线,建立 TIN 等等。
查看代码详情
<template>
<div ref="map" class="map"></div>
</template>
<script>
export default {
async mounted() {
let {
format: { GeoJSON },
Map,
View,
layer: { Tile: TileLayer, Vector: VectorLayer },
source: { OSM, Vector: VectorSource },
proj: { fromLonLat },
} = ol
const source = new VectorSource()
const turf = this.$turf
fetch(this.$withBase("/data/geojson/roads-seoul.geojson"))
.then(function (response) {
return response.json()
}).then(function (json) {
const format = new GeoJSON()
const features = format.readFeatures(json)
const street = features[0]
const turfLine = format.writeFeatureObject(street)
const distance = 0.2
const length = turf.lineDistance(turfLine, "kilometers")
for (let i = 1; i <= length / distance; i++) {
const turfPoint = turf.along(turfLine, i * distance, "kilometers")
const marker = format.readFeature(turfPoint)
marker.getGeometry().transform("EPSG:4326", "EPSG:3857")
source.addFeature(marker)
}
street.getGeometry().transform("EPSG:4326", "EPSG:3857")
source.addFeature(street)
})
const vectorLayer = new VectorLayer({
source: source,
})
const rasterLayer = new TileLayer({
source: new OSM(),
})
const map = new Map({
layers: [rasterLayer, vectorLayer],
target: document.getElementById("map"),
view: new View({
center: fromLonLat([126.980366, 37.52654]),
zoom: 15,
}),
})
},
}
</script>
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
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