当前位置: 首页 > news >正文

OpenLayers使用

初学ol,实现了高德地图不同图层的切换、交互性地图飞行以及加载本地JSON数据。

说一下不同图层切换的想法:

1.对于标准地图和卫星地图:二者最初便挂载到map上,两个图层是叠加显示的;当点击按钮时,其实是使用 .setVisible 设置了是否显示。

2.对于行政区划(JSON数据):直接使用 .addLayer 添加到map。

代码:

<script>var index = 7var data = []// 定义两个图层 style: 6: veter 7: tile 8: roadconst gaodeLayer1 = new ol.layer.Tile({title: "矢量地图",source: new ol.source.XYZ({url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=7&x={x}&y={y}&z={z}',wrapX: false})});const gaodeLayer2 = new ol.layer.Tile({title: "卫星地图",source: new ol.source.XYZ({url: 'http://wprd0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&style=6&x={x}&y={y}&z={z}',wrapX: false})});// 加载geojson数据var jsonLayer = new ol.layer.Vector({title: 'add Layer',source: new ol.source.Vector({projection: 'EPSG:4326',url: "China.json",format: new ol.format.GeoJSON()}),style: new ol.style.Style({stroke: new ol.style.Stroke({color: 'red',width: 1,}),})});const map = new ol.Map({layers: [gaodeLayer2,gaodeLayer1],view: new ol.View({center: ol.proj.transform([116.48,39.9], 'EPSG:4326', 'EPSG:3857'), projection: 'EPSG:3857',zoom: 8,minZoom: 1}),target: 'map'});// 加载控件const ZoomToExtent = new ol.control.ZoomToExtent({extent:[110, 30, 260, 80]})map.addControl(ZoomToExtent)const ZoomSlider = new ol.control.ZoomSlider()map.addControl(ZoomSlider)const FullScreen = new ol.control.FullScreen()map.addControl(FullScreen)// 定义地图点击事件map.on('click',(evt)=>{var position = evt.coordinatevar XY = ol.proj.transform(position, 'EPSG:3857', 'EPSG:4326')// console.log(XY)alert(XY.map(x => parseFloat(x.toFixed(2))))})// 定义图层切换function ChangeMap(t){            if (t){gaodeLayer2.setVisible(true)gaodeLayer1.setVisible(false)}else{gaodeLayer1.setVisible(true)gaodeLayer2.setVisible(false)}}// 定义查询并且执行飞行function Search(){var point = document.getElementById('input').value;data.push(point)// console.log(data)map.getView().animate({center: ol.proj.transform(data[data.length - 1].split(","), 'EPSG:4326', 'EPSG:3857'),zoom: 10})document.getElementById('input').value = ''}// 定义添加JSON图层function addJson(){map.addLayer(jsonLayer);}</script>

http://www.dtcms.com/a/277301.html

相关文章:

  • (2)从零开发 Chrome 插件:实现 API 登录与本地存储功能
  • 音视频学习(三十八):像素与位深
  • 打破并发瓶颈:虚拟线程实现详解与传统线程模型的性能对比
  • QuickUnion优化及Huffman树
  • JS红宝书pdf完整版
  • JAVA生成PDF(itextpdf)
  • 为什么玩游戏用UDP,看网页用TCP?
  • [2025CVPR]GNN-ViTCap:用于病理图像分类与描述模型
  • MyBatis框架进阶指南:深入理解CRUD与参数映射
  • Redis集群方案——哨兵机制
  • 无需付费即可利用AI消除音频噪声和生成字幕
  • 《Linux篇》自动化构建-make/Makefile
  • GraphRAG Docker化部署,接入本地Ollama完整技术指南:从零基础到生产部署的系统性知识体系
  • AI抠图软件,本地运行超快速
  • 水往低处流,人也往低处走
  • 三种网络类型
  • 跨域中间件通俗理解
  • 教程:如何查看浏览器扩展程序的源码
  • Linux驱动11 --- buildroot杂项驱动开发方法
  • 网络资源模板--基于Android Studio 实现的音乐播放器App
  • 【Go语言-Day 19】深入理解Go自定义类型:Type、Struct、嵌套与构造函数实战
  • 系规备考论文:论IT服务知识管理
  • 20250711_Sudo 靶机复盘
  • vue的优缺点
  • React强大且灵活hooks库——ahooks入门实践之状态管理类hook(state)详解
  • 在NDK开发中如何正确创建JNI方法
  • Perl小骆驼学习笔记 - 9. 用正则表达式处理文本
  • 香港服务器Python自动化巡检脚本开发与邮件告警集成
  • 《雨下小暑》诗赏——小暑时节暴雨之晨的清凉视听(智普清言)
  • iOS UI视图面试相关