OpenLayers 开源的Web GIS引擎 - 添加地图控件地图控件

news2024/11/13 4:03:25

中心点按钮、地图放大缩小滑块、全图和比例尺控件

直接上代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
     <!--在线引用ol3
     <script src="https://cdn.jsdelivr.net/npm/ol@v10.1.0/dist/ol.js"></script>
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ol@v10.1.0/ol.css">   
    -->
    <!--离线引用ol3-->
    <script src="./v10.0.0-package/dist/ol.js"></script>
    <link rel="stylesheet" href="./v10.0.0-package/ol.css">
    <title>初始化地图</title>
    <style>
        *{margin:0;padding:0}
        #map{
          width:100vw;
          height: 100vh;
        }
        .ol-zoomslider {
            top: 7.5em;
            left: .5em;
            height: 200px;
        }
      </style>
</head>
<body>
    
    <div id="map">
        <button id="btn" onclick='btn()'>按钮</button>
    </div>
    <script>

        /***初始化一个高德地图***/
        const gaodeLayer = new ol.layer.Tile({
            title:"高德地图",
            source:new ol.source.XYZ({
                // 有标注电子地图
                url:'http://webst0{1-4}.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
                // 无标注影像地图
                //url:'https://webst0{1-4}.is.autonavi.com/appmaptile?style=6&x={x}&y={y}&z={z}',
                // 影像地图路网
                //url:'https://wprd0{1-4}.is.autonavi.com/appmaptile?&x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=8&ltype=11',
                wrapX:false
            })
        });

        const map = new ol.Map({
            target:"map",
            layers:[
                gaodeLayer
            ],
            view:new ol.View({
                //xy值转至经纬度
                //center:ol.proj.transform([13951671.781120978, 5449979.971864047], 'EPSG:3857','EPSG:4326' ),
                //projection:'EPSG:4326',

                // 经纬度转至xy值
                center:ol.proj.transform([125.33,43.90],'EPSG:4326', 'EPSG:3857'),
                zoom:11
            }),

        });

        // 放大缩小滑动控件
        const zoomSlider = new ol.control.ZoomSlider();
        map.addControl(zoomSlider);
        // 全屏控件
        const fullScreen = new ol.control.FullScreen();
        map.addControl(fullScreen);
        // 比例尺
        const scale =  new ol.control.ScaleLine();
        map.addControl(scale);

         // 范围
        
        // 定位范围控件
        const zoomToExtent = new ol.control.ZoomToExtent({
            // 吉林市范围
            extent:[14042852.042145478, 5425525.753594573, 14129222.565575363, 5452876.419347371]
        })
        map.addControl(zoomToExtent);
       
        function btn() {
            // 获取当前可见视图范围
            //console.log(map.getView().calculateExtent())
            // 设置中心点
            map.getView().setCenter(ol.proj.transform([125.33,43.90], 'EPSG:4326', 'EPSG:3857'));
           
        }

        /*
        1、通过样式信息和几何信息构建点要素
        */
        const point = new ol.Feature({
            geometry:new ol.geom.Point([125.33,43.90]),
        });

        let style = new ol.style.Style({
            /* image属性设置点要素的样式 */
            image:new ol.style.Circle({
                /* radius设置点的班级 单位:degree*/
                radius:100,
                fill:new ol.style.Fill({
                    color:"#ff2d51"
                }),
                /*设置边框*/
                stroke:new ol.style.Stroke({
                    width:2,
                    color:"#333"
                })
            })
        })

        point.setStyle(style);

        /*2、将要素添加到矢量数据源*/
        let source = new ol.source.Vector({
            features:[point]
        })

        /*3、将矢量数据源添加到矢量图层*/
        let layer = new ol.layer.Vector({
            source
        })

        /*4、添加矢量图层到地图容器*/
        map.addLayer(layer);


        /***
         * 初始化一个天地图
         * 
         * vec_w - 地图;img_w - 影像;ter_w - 地形; cva_w - 地图标注
         * 
         * tk="天地图申请的密钥"
         * ***/
        /*const tdtVECLayer = new ol.layer.Tile({
            title:"高德地图地图",
            source:new ol.source.XYZ({
                url:'http://t{0-7}.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=352d4b1313777a8643542046a28d17e5',
                wrapX:false
            })
        });

        const tdtCVALayer = new ol.layer.Tile({
            title:"高德地图标注",
            source:new ol.source.XYZ({
                url:'http://t{0-7}.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=352d4b1313777a8643542046a28d17e5',
                wrapX:false
            })
        });

        const map = new ol.Map({
            target:"map",
            layers:[
             tdtVECLayer,
             tdtCVALayer
            ],
            view:new ol.View({
                // EPSG:3857投影
                 center:[13951671.781120978, 5449979.971864047],
                 projection:'EPSG:3857',
                // EPSG:4326投影
                //center:[125.33,43.90],
                //projection:'EPSG:4326',
                zoom:11,
            })
        });*/

        
    </script>

</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2161032.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python爬虫案例——腾讯网新闻标题(异步加载网站数据抓取,post请求)(6)

文章目录 前言1、任务目标2、抓取流程2.1 分析网页2.2 编写代码2.3 思路分析前言 本篇案例主要讲解异步加载网站如何分析网页接口,以及如何观察post请求URL的参数,网站数据并不难抓取,主要是将要抓取的数据接口分析清楚,才能根据需求编写想要的代码。 1、任务目标 目标网…

基于深度学习的树叶识别系统的设计与实现(pyqt5 python3.9 yolov8 10000张数据集)

&#x1f497;博主介绍&#x1f497;&#xff1a;✌在职Java研发工程师、专注于程序设计、源码分享、技术交流、专注于Java技术领域和毕业设计✌ 温馨提示&#xff1a;文末有 CSDN 平台官方提供的老师 Wechat / QQ 名片 :) Java精品实战案例《700套》 2025最新毕业设计选题推荐…

vector的模拟实现以及oj题

前言 上篇博客介绍了voctor的大部分的重要接口&#xff0c;本篇博客将模拟实现部分接口的效果。 vector的模拟实现 vector的模拟实现分为两个文件进行实现&#xff1a;vector.h、test.cpp vector.h 该部分为文件的主要部分&#xff0c;分别实现了vector的以下功能&#xf…

VSCode扩展连接虚拟机MySQL数据库

在虚拟机安装MySQL vscode通过ssh远程登录Ubuntu 在vscode终端运行以下命令。 sudo apt-get install mysql-server-5.7 用以下命令确认MySQL是否安装完成。 sudo mysql MySQL安装成功。 在VSCode安装SQL扩展 扩展名&#xff1a;MySQL Shell for VS Code。 安装完成后&am…

oracle各种版本在各种系统上安装配置需求快速参考

Oracle Database (RDBMS) on Unix AIX,HP-UX,Linux,Solaris and MS Windows Operating Systems Installation and Configuration Requirements Quick Reference (12.1/12.2/18c/19c) (Doc ID 1587357.1)

(14)关于docker如何通过防火墙做策略限制

关于docker如何通过防火墙做策略限制 1、iptables相关问题 在Iptables防火墙中包含四种常见的表&#xff0c;分别是filter、nat、mangle、raw。 filter&#xff1a;负责过滤数据包。 filter表可以管理INPUT、OUTPUT、FORWARD链。 nat&#xff1a;用于网络地址转换。 nat表…

边缘计算网关在工业中的应用

在工业4.0和智能制造的浪潮中&#xff0c;边缘计算网关扮演着至关重要的角色。AIoTedge边缘计算网关&#xff0c;作为工业互联网的关键组件&#xff0c;通过其强大的数据处理能力和智能分析功能&#xff0c;正在改变工业生产的面貌。 边缘计算网关的定义与角色 边缘计算网关是…

apache paimon简介(官翻)

介绍 如下架构所示: 读/写操作: Paimon 支持多样化的数据读写方式,并支持 OLAP 查询。 读取: 支持从历史快照(批处理模式)中消费数据,从最新偏移量(流处理模式)中读取数据,或以混合方式读取增量快照。写入: 支持从数据库变更日志(CDC)进行流式同步,从离线数据中…

sicp每日一题[2.24-2.27]

2.24-2.26没什么代码量&#xff0c;所以跟 2.27 一起发吧。 Exercise 2.24 Suppose we evaluate the expression (list 1 (list 2 (list 3 4))). Give the result printed by the interpreter, the corresponding box-and-pointer structure, and the interpretation of this a…

Vue3:自定义customRef

目录 一.性质 1.自定义性 2.工厂函数参数 3.track 和 trigger 函数 二.作用 1.防抖/节流 2.异步更新 3.条件性更新 4.精细控制依赖追踪 5.优化性能 三.使用 1.ts组件 2.vue.组件 四.代码 1.ts代码 2.vue代码 五.效果 在 Vue 3 中&#xff0c;customRef 是一个…

YOLOv10改进,YOLOv10主干网络替换为VanillaNet( CVPR 2023 华为提出的全新轻量化架构),大幅度涨点

摘要 基础模型的核心理念是“更多即不同”,这一理念在计算机视觉和自然语言处理领域取得了惊人的成功。然而,变压器模型的优化挑战和固有复杂性呼唤一种向简化转变的范式。在本研究中,引入了 VanillaNet,一种拥抱设计优雅的神经网络架构。通过避免高深度、快捷方式和复杂操…

java开发jmeter采样器

目录 1.前言 2.新建一个springboot工程 2.1 引入相关依赖 2.2 编写核心代码 2.2.1 取样器代码 2.2.2 取样器界面 2.2.3 sdk接口封装 3.源码打包 3.1 将sdk源码和采样器源码打成jar包 3.2 拷贝引用包 4.配置jmeter脚本 4.1 选择自定义采样器 4.2 界面里面配置参数 1.…

“一屏显江山”,激光显示重构「屏中世界」

【潮汐商业评论/原创】 2024年国庆期间&#xff0c;曾感动过无数国人的舞蹈诗剧《只此青绿》改编的同名电影即将上映&#xff0c;而这一次观众们不必走进电影院&#xff0c;在家里打开官方合作的海信激光电视也能享受到同等的视听效果&#xff0c;这是激光电视在观影场景领域的…

【卡片 / A】

题目 代码 #include <bits/stdc.h> using namespace std; int cnt[10]; bool consume(int x) {int need[10] {0};while (x){int k x % 10;need[k];x / 10;}for (int i 0; i < 10; i){if (cnt[i] < need[i])return false;}for (int i 0; i < 10; i){cnt[i] …

基于 RealSense D435i相机实现手部姿态检测

基于 RealSense D435i相机进行手部姿态检测&#xff0c;其中采用 Mediapipe 进行手部检测&#xff0c;以下是详细步骤&#xff1a; Mediapipe 是一个由 Google开发的开源框架&#xff0c;专门用于构建多媒体处理管道&#xff0c;特别是计算机视觉和机器学习任务。它提供了一系列…

OLED(2)驱动篇

文章目录 1 概述2 代码简述2.1 OLED 对象2.2 OLEDProtocol 对象2.3 OLEDFont 对象 3 成果展示 1 概述 1&#xff09;代码仓库&#xff1a;这里尝试了两种面向对象的方式&#xff0c;不足之处敬请指正。 OOP 方式&#xff1a;https://gitee.com/luyaocf/demo-jlc_stm32f407_oop.…

【逐行注释】扩展卡尔曼滤波EKF和粒子滤波PF的效果对比,MATLAB源代码(无需下载,可直接复制)

文章目录 总述源代码运行结果改进方向总述 本代码使用 M A T L A B MATLAB MATL</

2024最新金九银十必问面试题大全

我花了三天时间&#xff0c;整理了100道最经典的常见测试面试题&#xff08;附答案&#xff09;&#xff01;完整版文档见文末&#xff01; 1、所做项目的情况&#xff0c;主要做什么类型的测试&#xff1f; 2、你在测试中发现了一个bug&#xff0c;但是开发经理认为这不是一…

基于yolov5的中国交通标志TT100K检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv5的中国交通标志TT100K检测系统是一种利用深度学习技术实现高效、准确交通标志识别的系统。该系统采用YOLOv5作为核心检测算法&#xff0c;凭借其速度快、准确性高的特点&#xff0c;在实时交通标志识别领域展现出显著优势。 TT100K数据集作为该系统的…

【学术会议征稿】2024年先进控制系统与自动化技术国际学术会议(ACSAT 2024)

2024年先进控制系统与自动化技术国际学术会议&#xff08;ACSAT 2024&#xff09; 2024 International Conference on Advanced Control Systems and Automation Technologies 2024年先进控制系统与自动化技术国际学术会议&#xff08;ACSAT 2024&#xff09;将于2024年11月15…