西藏建设厅官方网站一体化/深圳整站seo

西藏建设厅官方网站一体化,深圳整站seo,大港天津网站建设,邯郸小程序定制开发以下是一份面向GIS初学者的OpenLayers开发详细教程&#xff0c;深度解析代码&#xff1a; 一、开发环境搭建 1.1 OpenLayers库引入 <!-- 使用CDN引入最新版OpenLayers --> <link rel"stylesheet" href"https://cdn.jsdelivr.net/npm/ollatest/ol.c…

以下是一份面向GIS初学者的OpenLayers开发详细教程,深度解析代码:
在这里插入图片描述

一、开发环境搭建

1.1 OpenLayers库引入

<!-- 使用CDN引入最新版OpenLayers -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ol@latest/ol.css">
<script src="https://cdn.jsdelivr.net/npm/ol@latest/dist/ol.js"></script>
  • ol.css:包含地图控件、图层等可视化样式
  • ol.js:OpenLayers核心功能库
  • 推荐使用固定版本号(如v7.3.0)确保稳定性

1.2 地图容器设置

.map {//设置地图控件显示尺寸height: 95vh;width: 95vw;
}
  • 使用视口单位(vh/vw)实现响应式布局
  • 保留5%边距防止窗口遮挡

二、地图核心配置解析

2.1 地图实例化

var map = new ol.Map({target: 'map',        // DOM元素IDlayers: [/* 图层数组 */],view: new ol.View({/* 视图配置 */})
});
  • target:绑定HTML元素的ID
  • layers:图层加载顺序遵循数组索引(先添加的在下层)
  • view:地图的空间参照系与初始状态

2.2 坐标系与投影转换

view: new ol.View({center: ol.proj.fromLonLat([120.62, 31.32]), // 苏州坐标zoom: 8,projection: "EPSG:3857"
})
  • EPSG:3857:Web墨卡托投影(Google/Bing等通用)
  • ol.proj.fromLonLat():将WGS84坐标(EPSG:4326)转换为Web墨卡托坐标
  • 转换公式:x = lon * 20037508.34 / 180, y = Math.log(Math.tan((90+lat)*Math.PI/360)) * 20037508.34 / Math.PI

2.3 天地图服务配置

new ol.layer.Tile({title: "天地图地形图层",source: new ol.source.XYZ({url: "http://t0.tianditu.gov.cn/DataServer?T=ter_w&x={x}&y={y}&l={z}&tk=您的密钥",wrapX: true})
})
  • 服务参数解析:
    • T=ter_w:全球地形图(中文标注)
    • T=cta_w:地形注记层(需叠加显示)
    • x/y/z:瓦片坐标与缩放级别
    • tk:开发者密钥(需自行申请更换)
  • wrapX: true:启用经度方向瓦片循环

三、进阶功能扩展

3.1 地图控件集成

// 比例尺控件
new ol.control.ScaleLine({units: 'metric', // 公制单位className: 'ol-scale-line' // 自定义样式类
})// 旋转复位控件
new ol.control.Rotate({autoHide: false,  // 常显旋转指示器duration: 500     // 复位动画时长
})

3.2 多源数据叠加

// 添加WMS服务示例
new ol.layer.Tile({source: new ol.source.TileWMS({url: 'https://demo.geo-solutions.it/geoserver/wms',params: {'LAYERS': 'topp:states','TILED': true}})
})

四、专业优化建议

4.1 性能优化

  1. 预加载设置:
new ol.layer.Tile({preload: Infinity, // 预加载所有相邻瓦片useInterimTilesOnError: false // 禁用错误瓦片显示
})
  1. 缓存控制:
source: new ol.source.XYZ({cacheSize: 512,    // 缓存容量crossOrigin: 'anonymous' // 跨域标识
})

4.2 错误处理

// 监听瓦片加载错误
source.on('tileloaderror', function(event) {console.error('Tile加载失败:', event.tile.src);
});// 全局错误捕获
map.on('error', function(error) {console.error('地图错误:', error.message);
});

五、完整代码展示

一下代码展示了如何加载天地图地形晕渲与地形注记。注意修改您的密钥

<!DOCTYPE html>
<html lang="zh">
<head><!-- 引入在线 OpenLayers 样式和脚本 --><link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/ol@latest/ol.css"><script src="https://cdn.jsdelivr.net/npm/ol@latest/dist/ol.js"></script><style>.map {height: 95vh;width: 95vw;}</style><title>天地图地形图</title>
</head>
<body><div id="map" class="map"></div><script type="text/javascript">// 创建地图var map = new ol.Map({target: 'map',layers: [new ol.layer.Tile({title: "天地图地形图层",source: new ol.source.XYZ({                     url: "http://t0.tianditu.gov.cn/DataServer?T=ter_w&x={x}&y={y}&l={z}&tk=您的密钥",                        wrapX: true})                    }),new ol.layer.Tile({title: "天地图地形图层注记",source: new ol.source.XYZ({                        url: "http://t0.tianditu.gov.cn/DataServer?T=cta_w&x={x}&y={y}&l={z}&tk=您的密钥",                        wrapX: true})                    })],view: new ol.View({center: ol.proj.fromLonLat([120.62, 31.32]), // 设置初始中心点(苏州)zoom: 8,projection: "EPSG:3857" // 使用Web墨卡托投影以适配 OpenLayers})});// 添加比例尺var scaleLineControl = new ol.control.ScaleLine();map.addControl(scaleLineControl);// 添加方向工具(重置旋转)var rotateControl = new ol.control.Rotate();map.addControl(rotateControl);</script>
</body>
</html>

六、天地图所有类型地图展示

下方连接教程中的代码已经添加了控件直接控制不同类型地图(以及注记)。只需要填入您的密钥即可使用。
OpenLayers集成天地图服务【懒人版】


本教程完整实现了基于OpenLayers的地形图展示系统。

推荐学习路径:OpenLayers官方文档 → OGC服务规范 → WebGL地图渲染 → GIS算法基础


转载吱一声~

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

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

相关文章

【免费】2000-2019年各省地方财政房产税数据

2000-2019年各省地方财政房产税数据 1、时间&#xff1a;2000-2019年 2、来源&#xff1a;国家统计局、统计年鉴 3、指标&#xff1a;行政区划代码、地区、年份、地方财政房产税 4、范围&#xff1a;31省 5、指标说明&#xff1a;房产税是对个人和单位拥有的房产征收的一种…

使用Python将视频转化为gif

使用Python将视频转化为gif 一、前言二、准备三、测试 一、前言 最近想把喜欢的视频片段作成gif&#xff0c;就试着用Python做了下&#xff0c;感觉效果还行&#xff0c;这里做个记录。 二、准备 先下载安装对应的库&#xff0c;命令如下&#xff1a; pip install moviepy …

SPI 机制与 Spring Boot AutoConfiguration 对比解析

一、架构效率革命性提升 1.1 类加载效率跃升 Spring Boot 2.7引入的AutoConfiguration.imports采用清单式配置加载&#xff0c;对比传统SPI机制&#xff1a; 传统SPI扫描路径&#xff1a;META-INF/services/** Spring Boot新方案&#xff1a;META-INF/spring/org.springfram…

【 <二> 丹方改良:Spring 时代的 JavaWeb】之 Spring Boot 中的异常处理:全局异常与自定义异常

<前文回顾> 点击此处查看 合集 https://blog.csdn.net/foyodesigner/category_12907601.html?fromshareblogcolumn&sharetypeblogcolumn&sharerId12907601&sharereferPC&sharesourceFoyoDesigner&sharefromfrom_link <今日更新> 一、开篇整…

moveit2基础教程上手-使用xarm6演示

0、前置信息 开发环境&#xff1a;wsl。 ros版本&#xff1a;jazzy&#xff0c;ubuntu版本&#xff1a;24.04 xarm-ros2地址 1、启动Rviz&#xff0c;加载 Motion Planning Plugin&#xff0c;实现演示功能 Getting Started — MoveIt Documentation: Rolling documentation…

第十六届蓝桥杯模拟二

由硬件框图可以知道我们要配置LED 和按键 一.LED 先配置LED的八个引脚为GPIO_OutPut,锁存器PD2也是,然后都设置为起始高电平,生成代码时还要去解决引脚冲突问题 二.按键 按键配置,由原理图按键所对引脚要GPIO_Input 生成代码,在文件夹中添加code文件夹,code中添加fun.…

晶鑫股份迈向敏捷BI之路,永洪科技助力启程

数据驱动的时代&#xff0c;每一次技术的创新和突破都在为企业的发展注入新的动力。而敏捷性也不再是选择&#xff0c;是企业生存与发展的必要条件。作为连续5年获得中国敏捷BI第一名的永洪科技&#xff0c;通过不断地在数据技术领域深耕细作&#xff0c;再次迎来了行业内的关注…

基于CAMEL 的Workforce 实现多智能体协同工作系统

文章目录 一、workforce 简介1.架构设计2.通信机制 二、workforce 工作流程图示例1.用户角色2.工作流程 三、workforce 中重要函数说明1.__init__函数2.add_single_agent_worker 函数3.add_role_playing_worker 函数4.add_workforce 函数 四、基于workforce实现多智能体协调&am…

每日一题力扣2974.最小数字游戏c++

2974. 最小数字游戏 - 力扣&#xff08;LeetCode&#xff09; class Solution { public:vector<int> numberGame(vector<int>& nums) {vector<int> arr(nums.size());sort(nums.begin(),nums.end());for(size_t i0;i<nums.size();i2){arr[i]nums[i1]…

Adobe After Effects 操作

Adobe After Effects &#xff08;AE&#xff09;可以实现将多个元素进行合成&#xff0c;实现特殊效果。AE的项目文件是aep&#xff0c;可以将素材、层、效果等一切信息&#xff0c;保存在这个项目文件中。 AE的原理&#xff0c;和PS的原理非常类似。 操作界面 操作界面如…

【React】基于自定义Hook提取公共逻辑

目录 自定义Hook自定义Hook 1自定义Hook 2使用 注意事项 自定义Hook 作用&#xff1a;提取封装一些公共的处理逻辑 玩法&#xff1a;创建一个函数&#xff0c;名字需要是 useXxx &#xff0c;后期就可以在组件中调用这个方法&#xff01; 自定义Hook 1 页面加载的时候修改浏…

AUTOSAR与arxml的文档解析

如下是文档脑图 一、文档概述 该文档是 AUTOSAR 经典平台的应用接口用户指南&#xff0c;主要解释 **Al Table&#xff08;应用接口表&#xff09;** 的结构、方法论及相关技术细节&#xff0c;帮助开发者理解如何通过标准化接口实现软件组件的互操作性。 关键内容 目的&#…

油候插件、idea、VsCode插件推荐(自用)

开发软件&#xff1a; 之前的文章&#xff1a; 开发必装最实用工具软件与网站 推荐一下我使用的开发工具 目前在用的 油候插件 AC-baidu-重定向优化百度搜狗谷歌必应搜索_favicon_双列 让查询变成多列&#xff0c;而且可以流式翻页 Github 增强 - 高速下载 github下载 TimerHo…

阿里云平台服务器操作以及发布静态项目

目录&#xff1a; 1、云服务器介绍2、云服务器界面3、发布静态项目1、启动nginx2、ngixn访问3、外网访问测试4、拷贝静态资源到nginx目录下并重启nginx 1、云服务器介绍 2、云服务器界面 实例详情&#xff1a;里面主要显示云服务的内外网地址以及一些启动/停止的操作。监控&…

区块链开发技术公司:引领数字经济的创新力量

在数字化浪潮席卷全球的今天&#xff0c;区块链技术作为新兴技术的代表&#xff0c;正以其独特的去中心化、不可篡改和透明性等特点&#xff0c;深刻改变着各行各业的发展格局。区块链开发技术公司&#xff0c;作为这一领域的先锋和推动者&#xff0c;正不断研发创新&#xff0…

多条件排序(C# and Lua)

C# 升序排序 OrderBy 按升序对序列的元素进行排序 ThenBy 按升序对序列中的元素执行后续排序 降序排序 OrderByDescending 按降序对序列的元素排序 ThenByDescending 按降序对序列中的元素执行后续排序 public class Fruit {public int id;public string name;publi…

React19源码系列之Hooks(useId)

useId的介绍 https://zh-hans.react.dev/reference/react/useId useId 是 React 18 引入的一个新 Hook&#xff0c;主要用于生成全局唯一的 ID。在开发中&#xff0c;我们经常需要为元素&#xff08;如表单元素、模态框等&#xff09;生成唯一 ID&#xff0c;以便在 JavaScri…

Redisson 分布式锁原理

加锁原理 # 如果锁不存在 if (redis.call(exists, KEYS[1]) 0) then# hash结构,锁名称为key,线程唯一标识为itemKey&#xff0c;itemValue为一个计数器。支持相同客户端线程可重入,每次加锁计数器1.redis.call(hincrby, KEYS[1], ARGV[2], 1);# 设置过期时间redis.call(pexpi…

单元化架构在字节跳动的落地实践

资料来源&#xff1a;火山引擎-开发者社区 什么是单元化 单元化的核心理念是将业务按照某种维度划分成一个个单元&#xff0c; 理想情况下每个单元内部都是完成所有业务操作的自包含集合&#xff0c;能独立处理业务流程&#xff0c;各个单元均有其中一部分数据&#xff0c;所有…

基于Python的垃圾短信分类

垃圾短信分类 1 垃圾短信分类问题介绍 1.1 垃圾短信 随着移动互联科技的高速发展&#xff0c;信息技术在不断改变着我们的生活&#xff0c;让我们的生活更方便&#xff0c;其中移动通信技术己经在我们生活起到至关重要的作用&#xff0c;与我们每个人人息息相关。短信作为移…