OpenLayers 6加载各种地图源的方法(天地图、百度、高德、ArcGIS、Bing、OSM、Google等)

2023-11-16

前言

OpenLayers是一个用于开发WebGIS客户端的JavaScript包。OpenLayers 支持多种常用的地图来源,包括天地图、百度地图、高德地图、ArcGIS地图、Bing地图、OSM地图、Google地图等。


一、加载天地图

1.前提条件

加载天地图前,需要先到天地图官网注册并申请应用密钥,官网地址为:国家地理信息公共服务平台 天地图

2.服务地址

瓦片地址如下(以矢量底图为例):https://t0.tianditu.gov.cn/DataServer?T=vec_c&x=3233&y=673&l=12&tk=你的密钥

3.加载代码

//实例化map对象加载地图
        var map = new ol.Map({
            //地图容器div的id 
            target: 'container',           
            //地图容器中加载的图层
            layers: [
                //加载瓦片图层数据
                new ol.layer.Tile({
                    title: "天地图矢量图层",
                    source: new ol.source.XYZ({
                        url: "http://t0.tianditu.com/DataServer?T=vec_w&x={x}&y={y}&l={z}&tk=你的密钥",                        
                        wrapX: false
                    })                    
                }),
                new ol.layer.Tile({
                    title: "天地图矢量图层注记",
                    source: new ol.source.XYZ({
                        url: "http://t0.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=你的密钥",                        
                        wrapX: false
                    })                    
                })
            ],
            //地图视图设置
            view: new ol.View({
                //地图初始中心点
                center: ol.proj.transform([103.23, 35.33], 'EPSG:4326', 'EPSG:3857'), //地图初始中心点
                //地图初始显示级别
                zoom: 4
            })
        });

二、加载百度地图

1.加载代码

//坐标参考系
        var projection = ol.proj.get("EPSG:3857");
        //分辨率
        var resolutions = [];
        for (var i = 0; i < 19; i++) {
            resolutions[i] = Math.pow(2, 18 - i);
        }
        var tilegrid = new ol.tilegrid.TileGrid({
            origin: [0, 0],
            resolutions: resolutions
        });
        //拼接百度地图出图地址
        var baidu_source = new ol.source.TileImage({
            //设置坐标参考系
            projection: projection,
            //设置分辨率
            tileGrid: tilegrid,
            //出图基地址
            tileUrlFunction: function (tileCoord, pixelRatio, proj) {
                if (!tileCoord) {
                    return "";
                }
                var z = tileCoord[0];
                var x = tileCoord[1];
                var y = tileCoord[2];

                if (x < 0) {
                    x = "M" + (-x);
                }
                if (y < 0) {
                    y = "M" + (-y);
                }
                return "http://online3.map.bdimg.com/onlinelabel/?qt=tile&x=" + x + "&y=" + y + "&z=" + z + "&styles=pl&udt=20151021&scaler=1&p=1";
            }
        });
        //百度地图
        var baidu_layer = new ol.layer.Tile({
            source: baidu_source
        });
        //地图容器
        var map = new ol.Map({
            target: 'container',
            layers: [baidu_layer],
            view: new ol.View({
                center: ol.proj.transform([103.23, 35.33], 'EPSG:4326', 'EPSG:3857'),
                zoom: 4
            })
        });

三、加载高德地图

1.加载代码

 var gaodeMapLayer = 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
            })
        });

        var map = new ol.Map({
            layers: [gaodeMapLayer],
            view: new ol.View({
                center: ol.proj.transform([103.23, 35.33], 'EPSG:4326', 'EPSG:3857'), //地图初始中心点
                projection: 'EPSG:3857',
                zoom: 4,
                minZoom: 1
            }),
            target: 'container'
        });

四、加载ArcGIS地图

1.加载代码

//实例化鼠标位置控件(MousePosition)
        var mousePositionControl = new ol.control.MousePosition({
            //坐标格式
            coordinateFormat: ol.coordinate.createStringXY(4),
            //地图投影坐标系(若未设置则输出为默认投影坐标系下的坐标)
            projection: 'EPSG:4326',
            //坐标信息显示样式,默认是'ol-mouse-position'
            className: 'custom-mouse-position',
            //显示鼠标位置信息的目标容器
            target: document.getElementById('mouse-position'),
            //未定义坐标的标记
            undefinedHTML: '&nbsp;'
        });

        //实例化Map对象加载地图
        var map = new ol.Map({
            //地图容器div的ID
            target: 'container', 
            //地图容器中加载的图层
            layers: [],
            //地图视图设置
            view: new ol.View({
                //地图初始中心点
                center: ol.proj.transform([103.23, 35.33], 'EPSG:4326', 'EPSG:3857'),
                //地图初始显示级别
                zoom: 4 
            }),
            //加载控件到地图容器中
            controls: ol.control.defaults({//地图中默认控件
                //                attributionOptions: /** @type {ol.control.Attribution} */({
                //                    collapsible: true //地图数据源信息控件是否可展开,默认为true
                //                })
            }).extend([mousePositionControl])//加载鼠标位置控件
        });
      
        arcGISLayers = new ol.layer.Tile({
            source: new ol.source.XYZ({
                url: 'http://server.arcgisonline.com/ArcGIS/rest/services/' + 'World_Topo_Map/MapServer/tile/{z}/{y}/{x}'
            })
        })
        //添加地图图层  
        map.addLayer(arcGISLayers); 

五、加载Bing地图

1.前提条件

加载Bing图前,需要先到官网注册并申请应用密钥,官网地址为:https://www.microsoft.com/en-us/maps

2.加载代码

//实例化Map对象加载地图
        var key = '你的密钥';
        var roads = new ol.layer.Tile({
            source: new ol.source.BingMaps({ key: key, imagerySet: 'Road' })
        });
        var map = new ol.Map({
            layers: [roads],
            target: 'container',
            view: new ol.View({
                center: ol.proj.transform([103.23, 35.33], 'EPSG:4326', 'EPSG:3857'),
                zoom: 4
            })
        });

六、加载OSM地图

1.加载代码

 //实例化Map对象加载地图
        var map = new ol.Map({
            //地图容器div的ID
            target: 'container',
            //地图容器中加载的图层
            layers: [
                //加载瓦片图层数据
                new ol.layer.Tile({
                    //图层对应数据源,此为加载OpenStreetMap在线瓦片服务数据
                    source: new ol.source.OSM() 
                })
            ],
            //地图视图设置
            view: new ol.View({
                //地图初始中心点
                center: ol.proj.transform([103.23, 35.33], 'EPSG:4326', 'EPSG:3857'),
                //地图初始显示级别
                zoom: 4 
            })
        });

七、加载Google地图

1.加载代码

//实例化map对象加载地图
        var map = new ol.Map({
            //地图容器div的id
            target: 'container',
            //地图容器中加载的图层
            layers: [
                //加载瓦片图层数据
                new ol.layer.Tile({
                    title: "谷歌地图",
                    source: new ol.source.XYZ({
                        url: "http://mt2.google.cn/vt/lyrs=m@167000000&hl=zh-CN&gl=cn&x={x}&y={y}&z={z} ",
                        wrapX: false
                    })
                })
            ],
            //地图视图设置
            view: new ol.View({
                //地图初始中心点
                center: ol.proj.transform([103.23, 35.33], 'EPSG:4326', 'EPSG:3857'),
                zoom: 4
            })
        });

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenLayers 6加载各种地图源的方法(天地图、百度、高德、ArcGIS、Bing、OSM、Google等) 的相关文章

随机推荐

  • MySQL 中的 SET 与 ENUM 类型使用详解

    一 SET类型 在创建表时 就指定SET类型的取值范围 sql view plain copy 属性名 SET 值1 值2 值3 值n 其中 属性名 参数指字段的名称 值n 参数表示列表中的第n个值 这些值末尾的空格将会被系统直接删除 其基
  • IRET指令详解

    copy from http lion3875 blog 51cto com 2911026 532347 当使用IRET指令返回到相同保护级别的任务时 IRET会从堆栈弹出代码段选择子及指令指针分别到CS与IP寄存器 并弹出标志寄存器内容
  • alert获取输入框内容_js弹出输入框并且获取输入值

    prompt 方法用于与用户交互 提示用户输入信息的对话框 首先 看看prompt方法的语法形式 var val prompt str1 str2 以上代码中 此方法包含两个属性 str1 提示用户输入的信息 str2 用户输入文本信息默认
  • OpenAI最新官方ChatGPT聊天插件接口《插件示例demo》全网最详细中英文实用指南和教程,助你零基础快速轻松掌握全新技术(四)(附源码)

    Example plugins 插件示例demo 前言 Introduction 导言 Learn how to build a simple todo list plugin with no auth 了解如何构建一个简单的待办事项列表插
  • 钉钉机器人接收阿里云物联网平台转发的数据

    开篇先献上效果图 现在钉钉已经成为跟微信一样流行的APP了 社交端微信占了 企业端现在的老大应该是非钉钉莫属了 现在用户数量应该已经超过4亿了吧 疫情期间钉钉可是真火了一把 好了 下面进入正题 1 数据获取 首先数据的来源是接入到阿里物联网
  • 背景差分法示例

    背景差分法 背景差分法是一种很常用而且广泛传感的技术 主要用于背景不动的情况下提取前景 它主要的原理是在当前帧和背景做减法 然后使用threshold进行二值化得到前景掩码 下面是背景减法的示意图 背景差分法主要包含以下两个步骤 1 背景的
  • 如何触发‘isTrusted = true‘点击事件

    前言 isTrusted是DOM属性 只能可读 如果事件是由用户调用的 则该事件是可信的 如果是由脚本调用的 则该事件是不可信的 总的来说就是 如果你是通过正常浏览器方式进行操作 基本无法改变该属性 解决方法 1 使用python的sele
  • Ubuntu16.04安装搜狗输入法 详细教程

    由于自己也是一个刚入门Ubuntu的新手 对很多终端命令 软件的安装都不大了解 这里记录一下Linux版本的搜狗输入法 一开始觉着有个中文版的系统自带的输入法挺好的 结果没有想到拼音确实不是很好用 就根据这篇教程安装好了Linux版本的搜狗
  • Faster RCNN详解

    paper Faster R CNN Towards Real Time Object Detection with Region Proposal Networks Tensorflow faster r cnn github Tenso
  • VUE经典面试题

    vue2 0的实现原理 vue数据双向绑定是通过数据劫持结合发布者订阅模式来实现的 也就是说数据层和视图层同步 数据层发生变化 视图跟着变化 视图变化数据也跟着随之发生变化 第一步 需要observe的数据对象进行递归遍历 第二步 comp
  • mysql 触发器

    触发器 当对某张表进行 INSERT DELETE UPDATE 操作时 会自动触发定义的触发器中的操作 顾名思义 当我们为某张表定义触发器后 向表中添加 删除 修改数据时 会触发触发器中定义的操作 触发器像是一个事件的监听 一旦监听的事件
  • springboot校园二手物品交易平台 毕业设计源码03373

    目 录 摘要 1 绪论 1 1 研究背景 1 2国内外研究现状 1 3论文结构与章节安排 2平台分析 2 1 可行性分析 2 2 系统流程分析 2 2 1 数据流程 3 3 2 业务流程 2 3 系统功能分析 2 3 1 功能性分析 2 3
  • 大数据标准化白皮书(2020版) 附下载地址

    大数据是新时代最重要的 数字金矿 是全球数字经济发展的核心动能 数据资源如同农业时代的土地 劳动力 工业时代的技术 资本 已经成为信息 时代重要的基础性战略资源和关键生产要素 是推动经济发展质量变革 效率变 革 动力变革的新引擎 不断驱动人
  • python爬取推特图片_twitter图片视频批量下载

    import requests import re from urllib request import urlretrieve import os import ssl ssl create default https context s
  • 试看5分钟视频python_Python面试应急5分钟!

    不论你是初入江湖 还是江湖老手 只要你想给自己一个定位那就少不了面试 面试的重要性相信大家都知道把 这就是我们常说的 第一印象 给大家说一下我的面试心得把 面试前的紧张是要的 因为这能让你充分准备 面试时的紧张是绝对要避开的 因为这可能导致
  • open source 3d map_3D视觉技术在机器人抓取作业中的应用实例

    原标题 3D视觉技术在机器人抓取作业中的应用实例 关键词 3D视觉 工业机器人 抓取 1 引言 3D视觉技术作为新兴的技术领域还存在很多亟待解决的问题 但2D视觉已不能满足空间抓取的应用要求 与2D视觉相比 3D视觉技术的优点有 1 3D视
  • C++ 创建桌面快捷方式

    include
  • 白盒测试——基本路径测试

    基本路径测试是将程序流程图转化为控制流图 通过分析控制结构的环路复杂性 进而找出路径的基本独立集 最终导出测试用例 基本独立集 从基本独立集导出的测试用例保证对程序中的每一条语句至少执行一次 控制流图 定义 百度百科 是一个过程或程序的抽象
  • 若依开关使用

  • OpenLayers 6加载各种地图源的方法(天地图、百度、高德、ArcGIS、Bing、OSM、Google等)

    前言 OpenLayers是一个用于开发WebGIS客户端的JavaScript包 OpenLayers 支持多种常用的地图来源 包括天地图 百度地图 高德地图 ArcGIS地图 Bing地图 OSM地图 Google地图等 一 加载天地图