OpenLayers 详细开发指南 - 第十部分 - 基础属性和方法汇总

1. Map(地图对象)

// 1. 创建地图
const map = new Map({
  target: 'map',  // DOM元素ID
  view: view,     // 视图对象
  layers: [],     // 图层数组
  controls: [],   // 控件数组
  interactions: [], // 交互数组
  overlays: []    // 覆盖物数组
});

// 2. 常用方法
// 图层操作
map.addLayer(layer);           // 添加图层
map.removeLayer(layer);        // 移除图层
map.getLayers();              // 获取所有图层
map.getLayerGroup();          // 获取图层组

// 视图操作
map.getView();                // 获取视图
map.setView(view);            // 设置视图

// 控件操作
map.addControl(control);      // 添加控件
map.removeControl(control);   // 移除控件
map.getControls();           // 获取所有控件

// 交互操作
map.addInteraction(interaction); // 添加交互
map.removeInteraction(interaction); // 移除交互
map.getInteractions();        // 获取所有交互

// 覆盖物操作
map.addOverlay(overlay);      // 添加覆盖物
map.removeOverlay(overlay);   // 移除覆盖物
map.getOverlays();           // 获取所有覆盖物

// 坐标转换
map.getPixelFromCoordinate(coordinate); // 坐标转像素
map.getCoordinateFromPixel(pixel);      // 像素转坐标

// 事件监听
map.on('click', function(event) {});     // 点击事件
map.on('pointermove', function(event) {}); // 鼠标移动事件
map.on('moveend', function() {});        // 地图移动结束事件

2. View(视图)

// 1. 创建视图
const view = new View({
  center: [0, 0],          // 中心点坐标
  zoom: 4,                 // 缩放级别
  minZoom: 2,             // 最小缩放级别
  maxZoom: 19,            // 最大缩放级别
  rotation: 0,            // 旋转角度
  projection: 'EPSG:3857' // 投影
});

// 2. 常用方法
// 视图状态
view.setCenter([x, y]);    // 设置中心点
view.getCenter();          // 获取中心点
view.setZoom(level);       // 设置缩放级别
view.getZoom();           // 获取缩放级别
view.setRotation(angle);   // 设置旋转角度
view.getRotation();       // 获取旋转角度

// 视图范围
view.fit(extent, {
  padding: [100, 100, 100, 100],
  duration: 1000
});  // 适应范围

// 动画
view.animate({
  center: [x, y],
  zoom: level,
  rotation: angle,
  duration: 1000
});

// 事件监听
view.on('change:center', function() {}); // 中心点变化
view.on('change:resolution', function() {}); // 分辨率变化
view.on('change:rotation', function() {});  // 旋转角度变化

3. Layers(图层集合)

// 1. 图层组
const layerGroup = new LayerGroup({
  layers: []  // 图层数组
});

// 2. 常用方法
layerGroup.getLayers();     // 获取所有图层
layerGroup.setLayers(layers); // 设置图层
layerGroup.addLayer(layer);   // 添加图层
layerGroup.removeLayer(layer); // 移除图层

// 3. 图层属性
layer.setVisible(true/false); // 设置可见性
layer.getVisible();          // 获取可见性
layer.setOpacity(0-1);       // 设置透明度
layer.getOpacity();         // 获取透明度
layer.setZIndex(index);      // 设置层级
layer.getZIndex();          // 获取层级

4. Controls(控件集合)

// 1. 常用控件
// 缩放控件
const zoom = new ZoomControl({
  zoomInTipLabel: '放大',
  zoomOutTipLabel: '缩小'
});

// 比例尺控件
const scaleLine = new ScaleLine({
  units: 'metric'
});

// 鼠标位置控件
const mousePosition = new MousePosition({
  coordinateFormat: createStringXY(4),
  projection: 'EPSG:4326'
});

// 全屏控件
const fullScreen = new FullScreen();

// 2. 控件方法
control.setMap(map);       // 设置地图
control.getMap();         // 获取地图
control.setTarget(element); // 设置目标元素
control.getTarget();      // 获取目标元素

5. Interactions(交互集合)

// 1. 常用交互
// 选择交互
const select = new Select({
  condition: click,
  style: selectStyle
});

// 修改交互
const modify = new Modify({
  features: select.getFeatures()
});

// 绘制交互
const draw = new Draw({
  source: vectorSource,
  type: 'Polygon'
});

// 2. 交互方法
interaction.setActive(true/false); // 设置激活状态
interaction.getActive();          // 获取激活状态
interaction.setMap(map);          // 设置地图
interaction.getMap();            // 获取地图

// 3. 事件监听
draw.on('drawstart', function(event) {});
draw.on('drawend', function(event) {});
select.on('select', function(event) {});
modify.on('modifystart', function(event) {});
modify.on('modifyend', function(event) {});

6. Overlays(覆盖物集合)

// 1. 创建覆盖物
const overlay = new Overlay({
  element: document.getElementById('popup'),
  positioning: 'bottom-center',
  offset: [0, -10],
  autoPan: true,
  autoPanAnimation: {
    duration: 250
  }
});

// 2. 覆盖物方法
overlay.setPosition(coordinate); // 设置位置
overlay.getPosition();         // 获取位置
overlay.setElement(element);    // 设置元素
overlay.getElement();         // 获取元素
overlay.setOffset(offset);     // 设置偏移
overlay.getOffset();          // 获取偏移

7. VectorLayer(矢量图层)

// 1. 创建矢量图层
const vectorLayer = new VectorLayer({
  source: vectorSource,
  style: style,
  visible: true,
  opacity: 1,
  zIndex: 1
});

// 2. 矢量图层方法
vectorLayer.getSource();          // 获取数据源
vecto
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

正义的大古

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值