Openlayers 教程 - 获取地图中心点、范围以及缩放等级

news2024/11/27 12:44:44

Openlayers 教程 - 获取地图中心点、范围以及缩放等级

    • 核心代码
    • 完整代码:
    • 在线示例

之前项目中需要实时获取地图中心点以及范围,难度不高,为了方便使用,这里记录分享一下。

本文包括核心代码、完整代码以及在线示例。


核心代码


// 获取中心点
function getCenter() {
    const center = ol.extent.getCenter(getExtent())
    console.log('center:',center);
    addPoint(center);
    return center;
}

// 获取范围
function getExtent() {
    const size = map.getSize();
    const extent = map.getView().calculateExtent(size);
    console.log('extent:',extent);
    addExtent(extent);
    return extent
}

// 获取地图等级
function getZoom() {
    alert(map.getView().getZoom());
}


完整代码:


<html lang="en">
<head>
    <meta charset="utf-8">
    <!--注意:openlayers 原版的比较慢,这里引起自己服务器版-->
    <link rel="stylesheet" href="http://openlayers.vip/examples/css/ol.css" type="text/css">
    <style>
        /* 注意:这里必须给高度,否则地图初始化之后不显示;一般是计算得到高度,然后才初始化地图 */
        .map {
            height: 400px;
            width: 100%;
            float: left;
        }
    </style>
    <!--注意:openlayers 原版的比较慢,这里引起自己服务器版-->
    <script src="http://openlayers.vip/examples/resources/ol.js"></script>
    <script src="./tiandituLayers.js"></script>
    <title>OpenLayers example</title>
</head>
<body>
<h2>tianditu ocean layer</h2>
<!--地图容器,需要指定 id -->
<div id="map" class="map"></div>
<!--注意:本示例将 高德腾讯坐标设置为黑色;将百度坐标设置为黄色 -->
<!--注意:本示例将 高德腾讯坐标转为WGS84颜色设置为粉色;将百度坐标转为WS84颜色设置为绿色 -->
<script type="text/javascript">
    var map = new ol.Map({
        // 地图容器
        target: 'map',
        // 地图图层,比如底图、矢量图等
        layers: [
            getIMG_CLayer(),
            getIBO_CLayer(),
            getCIA_CLayer(),
        ],
        // 地图视野
        view: new ol.View({
            projection: "EPSG:4326",
            // 定位
            center: [116, 39],
            // 缩放
            zoom: 4,
            maxZoom: 18,
            minZoom: 1,
        })
    });


    // 默认样式
    var defaultStyle = [
        new ol.style.Style({
            stroke: new ol.style.Stroke({
                color: '#0000ff',
                width: 0.5,
            })
        }), new ol.style.Style({
            stroke: new ol.style.Stroke({
                color: '#00f0f0',
                width: 6,
            })
        }), new ol.style.Style({
            stroke: new ol.style.Stroke({
                color: '#0000ff',
                width: 0.5,
            })
        }), new ol.style.Style({
            //填充样式
            fill: new ol.style.Fill({
                color: 'rgba(0, 0, 255, 0.3)',
            }),
            image: new ol.style.Circle({
                radius: 5,
                fill: new ol.style.Fill({
                    color: 'white',
                })
            })
        })]

    // 创建数据源,添加要素
    const source = new ol.source.Vector();
    // 创建要素图层
    const layer = new ol.layer.Vector({
        source: source,
        style: defaultStyle
    });

    map.addLayer(layer);

    // 添加中心点
    function addPoint(position){
        // 创建要素,设置其样式
        var feature = new ol.Feature({
            geometry: new ol.geom.Point(position)
        });
        clearFunc();
        addFeature(feature);
    }

    // 添加范围
    function addExtent(extent){
        // 创建要素,设置其样式
        var feature = new ol.Feature({
            geometry: ol.geom.Polygon.fromExtent(extent)
        });
        clearFunc();
        addFeature(feature);
    }

    // 获取中心点
    function getCenter() {
        const center = ol.extent.getCenter(getExtent())
        console.log('center:',center);
        addPoint(center);
        return center;
    }

    // 获取范围
    function getExtent() {
        const size = map.getSize();
        const extent = map.getView().calculateExtent(size);
        console.log('extent:',extent);
        addExtent(extent);
        return extent
    }

    // 获取地图等级
    function getZoom() {
        alert(map.getView().getZoom());
    }

    // 清空
    function clearFunc() {
        source && source.clear();
    }

    // 添加
    function addFeature(feature) {
        source && source.addFeature(feature);
    }

    // getExtent();

</script>

<button id="getCenter" onclick="getCenter()">获取地图视野中心点</button>
<button id="getExtent" onclick="getExtent()">获取地图视野范围</button>
<button id="getZoom" onclick="getZoom()">获取地图当前等级</button>
<button id="clearFunc" onclick="clearFunc()">清空</button>
</body>
</html>

在这里插入图片描述

在这里插入图片描述


在线示例

在线示例:Openlayers 教程 - 获取地图中心点、范围以及缩放等级


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

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

相关文章

Consul原理介绍

官方文档&#xff1a;https://www.consul.io/docs Raft动画演示&#xff1a;http://thesecretlivesofdata.com/raft/ 注册中心对比 Consul特点 服务发现、健康检查、Key/Value存储、安全服务通信&#xff08;TLS证书&#xff09;、多数据中心 架构 角色 数据中心 数据中心内…

windows 中pycharm中venv无法激活

1.用管理员身份打开Windows PowerShell 2.进入项目的&#xff1a;venv\Scripts 如&#xff1a;D: (1): cd .\project\venv\Scripts\ (2): 执行命令&#xff1a; Set-ExecutionPolicy RemoteSigned (3): 选择&#xff1a;Y (4): .\activate

使用生成式 AI 和 Amazon Kendra 实现企业规模的图像字幕创建和搜索

Amazon Kendra 是一个由机器学习(ML)驱动的智能搜索服务。Amazon Kendra 重新构想了您的网站和应用程序的搜索功能,以便您的员工和客户可以轻松地找到散布在您组织内多个位置和内容存储库中的内容。 亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、…

Linux启动黑屏卡住Logo登录界面无法进入系统的终极解决方式

Linux启动黑屏 卡住Logo登录界面无法进入系统的终极解决方式 "⮫适用于ubuntu系统⮨" 起因经过方法1--甲说方法2--乙说方法3--丙说方法4--丁说 结果中途误删ubuntu的etc文件如何恢复于是&#xff0c;我重装了系统&#xff0c;没想到有意外收获&#xff08;中途还把新…

C语言每日一练-------Day(9)

本专栏为c语言练习专栏&#xff0c;适合刚刚学完c语言的初学者。本专栏每天会不定时更新&#xff0c;通过每天练习&#xff0c;进一步对c语言的重难点知识进行更深入的学习。 今日练习题关键字&#xff1a;字符个数统计 多数元素 投票法 &#x1f493;博主csdn个人主页&#xf…

ITMS介绍

ITMS&#xff08;Integrated Terminal Management System&#xff09;&#xff0c;终端综合管理系统。 主要用于家庭网关的设备注册&#xff0c;初始化自动配置&#xff0c;软件版本升级&#xff0c;远程故障诊断修复和设备监控等。它通过北向连接服开系统用于接收业务工单&am…

CorelDRAW快捷键大全

CorelDRAW是一款非常优秀且专业的平面设计软件&#xff0c;为用户多种强大的平面设计所需要用到的功能&#xff0c;帮助用户能够更好的进行设计&#xff0c;快速的达到自己想要的标准。下面小编就给大家分享一下CorelDRAW快捷键大全&#xff0c;有需要的小伙伴快来看一看吧。 …

Vue2023 面试归纳及复习

1. Vue 3中的Composition API&#xff08;Hooks&#xff09;是什么&#xff1f;它与Options API有何不同&#xff1f; 答&#xff1a;Composition API是Vue 3中引入的一种新的API风格&#xff0c; 用于组织和重用组件逻辑。它与Options API相比&#xff0c; 提供了更灵活和可…

SQL sever中库管理

目录 一、创建数据库 1.1库界面方式 1.2SQL命令方式 二、修改数据库 2.1库界面方式 2.2SQL命令方式 三、删除数据库 3.1库界面方式 3.2SQL命令方式 四、附加和分离数据库 4.1附加和分离数据库概述 4.2作用 4.3附加和分离数据库方法 4.4示例 一、创建数据库 1.1库…

Spring——Spring读取文件

文章目录 1.通过 value 读取比较简单的配置信息2.通过ConfigurationProperties读取并与 bean 绑定3.通过ConfigurationProperties读取并校验4. PropertySource 读取指定 properties 文件5.题外话:Spring加载配置文件的优先级 很多时候我们需要将一些常用的配置信息比如阿里云os…

protobuf生成golang和grpc代码踩坑记

错误提示&#xff1a;seems to be defined in "*.proto", which is not imported by "*proto". To use it here, please add the necessary import. 这个地方主要是因为包名的问题&#xff0c;假设user.proto文件被product.proto import了&#xff0c;则u…

《Python趣味工具》——文字RPG游戏的开发(附人生选择模拟器的详细讲解及其他多种RPG游戏的源码)

今天我们来学习如何制作一个文字RPG游戏 。 内容主要分为3个部分&#xff1a; part1. 文字游戏&#xff08;MUD&#xff09;的趣味历史 part2. 文字游戏的设计方法 part3. 文字游戏功能实现 文章目录 一、文字游戏&#xff08;MUD&#xff09;的趣味历史:1. 什么是MUD游戏:2. …

未找到System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(System.Guid) 方法错误

记录此问题实际上是由于.netFrame框架配置太高引起的&#xff0c;一般常见于二次开发中&#xff0c;因为二次开发一般都是引用的com组件&#xff0c;在引用过程中后台代码调用了 Method not found: System.Type System.Runtime.InteropServices.Marshal.GetTypeFromCLSID(Syste…

研发规范第十三讲:阿里 - 如何进行项目稳定性建设

研发规范第十三讲&#xff1a;阿里 - 如何进行项目稳定性建设 本文是研发规范第13讲&#xff0c;阿里巴巴高级技术专家云狄将结合自己多年的经验&#xff0c;从开发规范、开发流程、技术规划与管理三个角度出发&#xff0c;分享对技术TL这一角色的理解与思考&#xff0c;欢迎一…

2、QT的信号与槽

一、什么是信号与槽 一个对象发送一个信号出去&#xff0c;另外一个对象接收到该信号后&#xff0c;会触发相应的槽函数 二、信号与槽的语法 connect(信号的发送者&#xff0c;SIGNAL(信号名称),信号的接收者,SLOT(槽函数)); 1、写法&#xff1a; QT 4 的写法 connect(sende…

Python爬虫:一个爬取豆瓣电影人像的小案例

从谷歌浏览器的开发工具进入 选择图片右键点击检查 ![在这里插入图片描述](https://img-blog.csdnimg.cn/1b38c2a942c441fb8cb545a28bb35015.png 翻页之后发现网址变化的只有start数值&#xff0c;每次变化值为30 Python代码 import requests from bs4 import BeautifulSou…

零基础安装pycuda

零基础安装pycuda 前言安装Visual Studio安装C/C环境添加环境变量 安装pycuda查看系统位数查看python版本下载whl文件 前言 最近开始学习基于python的cuda编程&#xff0c;记录一下pycuda的安装。 在安装pycuda之前&#xff0c;首先需要有NVIDIA的独立显卡并且要安装CUDA和CUD…

程序与进程

一、程序是怎么被执行的 1.在程序中&#xff0c;由引导代码去调用程序中得main函数&#xff0c;而这个过程由链接器完成&#xff0c;链接器将引导代码链接到我们的应用程序构成可执行文件。 2.程序运行需要通过操作系统的加载器来实现&#xff0c;加载器是操作系统中的程序&a…

【javascript实操记录】

功能描述&#xff1a; 1. 利用split()方法对测试数据进行解析&#xff1a;学科&#xff0c;日期 2. 将测试数据封装成对象数组的格式 3. 使用数组的sort()方法和Date对象&#xff0c;将测试数据按照日期从早到晚进行排序 4. 表格数据的静态填充 5. 距离最近考试的倒计时天…

使用 NestJS 和 Prisma 构建 REST API

NestJS是Node.js框架之一&#xff0c;它最近获得了很多开发人员的喜爱和牵引力。本文将教你如何使用NestJS&#xff0c;Prisma&#xff0c;PostgreSQL和Swagger构建后端REST API。 文章目录 介绍您将使用的技术 先决条件假定的知识开发环境 生成 NestJS 项目创建 PostgreSQL 实…