logo

Openlayer系列教程之三:绘制多边形与GeoJson边界绘制

作者:起个名字好难2024.01.22 15:13浏览量:25

简介:在Openlayer中,你可以使用其强大的图形绘制功能来创建各种复杂的几何图形。本篇教程将向你介绍如何使用Openlayer绘制多边形,以及如何使用GeoJson数据绘制边界。

在Openlayer中,你可以使用其强大的图形绘制功能来创建各种复杂的几何图形。本篇教程将向你介绍如何使用Openlayer绘制多边形,以及如何使用GeoJson数据绘制边界。
一、绘制多边形
在Openlayer中,你可以使用ol.interaction.Draw类来创建绘制多边形的交互。以下是一个简单的示例:

  1. import Map from 'ol/Map';
  2. import View from 'ol/View';
  3. import TileLayer from 'ol/layer/Tile';
  4. import OSM from 'ol/source/OSM';
  5. import {Circle, Fill, Stroke, Style} from 'ol/style';
  6. import {Circle as olCircle, Feature, Polygon, Vector as olVector} from 'ol';
  7. import VectorLayer from 'ol/layer/Vector';
  8. import VectorSource from 'ol/source/Vector';
  9. import {fromLonLat} from 'ol/proj';
  10. const map = new Map({
  11. target: 'map',
  12. layers: [
  13. new TileLayer({
  14. source: new OSM()
  15. })
  16. ],
  17. view: new View({
  18. center: fromLonLat([116.397428, 39.909211]),
  19. zoom: 10
  20. })
  21. });
  22. // 创建绘制多边形的交互
  23. const draw = new ol.interaction.Draw({
  24. source: new ol.source.Vector({wrapX: false}),
  25. type: 'Polygon',
  26. style: new Style({
  27. fill: new Fill({color: 'rgba(255, 0, 0, 0.5)'}),
  28. stroke: new Stroke({color: '#ffcc33', width: 2})
  29. })
  30. });
  31. map.addInteraction(draw);
  32. // 监听绘制完成事件
  33. draw.on('drawend', function(e) {
  34. console.log(e.feature);
  35. });

在上述代码中,我们首先创建了一个Openlayer地图,并添加了一个OSM图层。然后,我们创建了一个新的交互ol.interaction.Draw,并将其类型设置为Polygon(多边形)。我们给多边形的线条添加了颜色和宽度,并设置了一个半透明的红色填充。最后,我们添加了一个监听器,当用户完成绘制时,会在控制台打印出绘制的几何图形。
二、GeoJson边界绘制
如果你有一个GeoJson格式的边界数据,你可以使用Openlayer的ol.source.Vectorol.layer.Vector来绘制它。以下是一个简单的示例:
```javascript
import Map from ‘ol/Map’;
import View from ‘ol/View’;
import TileLayer from ‘ol/layer/Tile’;
import OSM from ‘ol/source/OSM’;
import VectorLayer from ‘ol/layer/Vector’;
import VectorSource from ‘ol/source/Vector’;
import {fromLonLat} from ‘ol/proj’;
import GeoJSON from ‘ol/format/GeoJSON’;
import {Polygon, Vector as olVector} from ‘ol’;
const map = new Map({
target: ‘map’,
layers: [
new TileLayer({
source: new OSM()
}),
new VectorLayer({
source: new VectorSource({
url: ‘path_to_your_geojson_file’,
format: new GeoJSON()
}),
style: new Style({
fill: new Fill({color: ‘rgba(255, 0, 0, 0.5)’}),
stroke: new Stroke({color: ‘#ffcc33’, width: 2})
})
})
],
view: new View({
center: fromLonLat([116.397428, 39.909211

相关文章推荐

发表评论