OpenLayers 开源的Web GIS引擎 - 地图初始化

在线引用:

地址: OpenLayers - Get the Code

离线引用:

下载地址Releases · openlayers/openlayers · GitHub

v10.0.0版本

地图初始化代码:

复制代码
<!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;
        }
      </style>
</head>
<body>
    
    <div id="map"></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}',
                wrapX:false
            })
        });

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

</body>
</html>

坐标系转换: EPSG:3857 和 EPSG:4326 坐标系相互转换

复制代码
 // EPSG:3857 转换经纬度(EPSG:4326)
        function mercatorTolonlat(mercator){
            var lonlat={
                x:0,
                y:0
            };
            var x = mercator.x/20037508.34*180;
            var y = mercator.y/20037508.34*180;
            y= 180/Math.PI*(2*Math.atan(Math.exp(y*Math.PI/180))-Math.PI/2);
            lonlat.x = x;
            lonlat.y = y;
            return lonlat;
        }

        // 经纬度(EPSG:4326)转换EPSG:3857
        function lonLat2Mercator(lonlat){
            var mercator = {
                x:0,
                y:0
            };
            var earthRad = 6378137.0;
            mercator.x = lonlat.lng * Math.PI / 180 * earthRad;
            var a = lonlat.lat * Math.PI / 180;
            mercator.y = earthRad / 2 * Math.log((1.0 + Math.sin(a)) / (1.0 - Math.sin(a)));
            return mercator;
        }


          // 使用
          var lonlat={
            lat:43.90,
            lng:125.33
        }
        // 打印
       console.log( lonLat2Mercator(lonlat));

补充(坐标转换):

复制代码
 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' ),
                projection:'EPSG:3857',
                zoom:11
            })
        });
相关推荐
一只大侠的侠5 小时前
Flutter开源鸿蒙跨平台训练营 Day9分类数据的获取与渲染实现
flutter·开源·harmonyos
鹏北海-RemHusband6 小时前
从零到一:基于 micro-app 的企业级微前端模板完整实现指南
前端·微服务·架构
LYFlied6 小时前
AI大时代下前端跨端解决方案的现状与演进路径
前端·人工智能
光影少年6 小时前
AI 前端 / 高级前端
前端·人工智能·状态模式
一位搞嵌入式的 genius6 小时前
深入 JavaScript 函数式编程:从基础到实战(含面试题解析)
前端·javascript·函数式
anOnion6 小时前
构建无障碍组件之Alert Dialog Pattern
前端·html·交互设计
一只大侠的侠6 小时前
Flutter开源鸿蒙跨平台训练营 Day 5Flutter开发鸿蒙电商应用
flutter·开源·harmonyos
choke2336 小时前
[特殊字符] Python 文件与路径操作
java·前端·javascript
云飞云共享云桌面6 小时前
高性能图形工作站的资源如何共享给10个SolidWorks研发设计用
linux·运维·服务器·前端·网络·数据库·人工智能
Deng9452013146 小时前
Vue + Flask 前后端分离项目实战:从零搭建一个完整博客系统
前端·vue.js·flask