OpenLayers 3 坐标、坐标系、投影

OpenLayers 3 坐标、坐标系、投影

一、坐标

代码中我们常见到的数组 [0,0] 就是我们常说的坐标

在这里插入图片描述

坐标是一个包含两个元素的数组,第一个元素代表地图上的x坐标,第二个元素代表地图上的y坐标。通过x坐标和y坐标我们就可以定位到地图上的任何一个位置

二、坐标系

学过地理知识都知道,地球并不是一个完全规则的球体。在不同的地区,为了在数学上表示它,就出现了多种不同的参考椭球体,比如克拉索夫斯基(Krasovsky)椭球体,WGS1984椭球体,更多的椭球体参见参考椭球体。在参考椭球体的基础上,就发展出了不同的地理坐标系,比如我国常用的WGS84,北京54,西安80坐标系,欧洲,北美也有不同的坐标系。北京54使用的是克拉索夫斯基(Krasovsky)椭球体,WGS84使用的是WGS1984椭球体。由此可见,多个坐标系是源于地理的复杂性。

由于存在着多种坐标系,即使同样的坐标,在不同的坐标系中,也表示的是不同的位置,这就是大家经常遇到的偏移问题的根源,要解决这类问题,就需要纠偏,把一个坐标系的坐标转换成另一个坐标系的坐标。

三、投影

投影是为了把不可展的椭球面描绘到平面上,它使用几何透视方法或数学分析的方法,将地球上的点和线投影到可展的曲面(平面、园柱面或圆锥面)上,再将此可展曲面展成平面,建立该平面上的点、线和地球椭球面上的点、线的对应关系。正是因为有投影,大家才能在网页上看到二维平面的地球地图

投影方式也多种多样,其中有一种投影叫墨卡托投影(Mercator Projection),广泛使用于网页地图,对于OpenLayers 3的开发者而言,尤其重要,详情参见墨卡托投影

四、使用不同坐标系和投影的定位的地图

1、指定投影使用坐标系EPSG:4326
		view: new ol.View({
            center: [104.06, 30.67],   // 设置地图显示中心
            projection: 'EPSG:4326',  // 指定投影使用坐标系EPSG:4326
            zoom: 10
        	}),

在这里插入图片描述

2、指定投影使用坐标系EPSG:3857
		view: new ol.View({
                center: [104.06, 30.67],   // 设置地图显示中心
                projection: 'EPSG:3857',  // 指定投影使用坐标系EPSG:3857
                zoom: 10
                }),

在这里插入图片描述

五、OpenLayers 3使用的坐标系

1、默认坐标系

OpenLayers 3默认使用的是EPSG:3857

2、支持的坐标系

OpenLayers 3支持两种投影,一个是EPSG:4326(全球通用),等同于WGS84坐标系,参见详情。另一个是EPSG:3857(web地图专用),等同于900913,由Mercator投影而来,经常用于web地图,参见详情

3、坐标系的转换和使用

由于OpenLayers 3默认使用的是EPSG:3857,OpenLayers 3 若想使用EPSG:4326,有两种方式:

(1)直接指定

	view: new ol.View({
        center: [104.06, 30.67],   // 设置地图显示中心
        projection: 'EPSG:4326',  // 指定投影使用坐标系EPSG:4326
        zoom: 10
    	}),

(2)EPSG:4326EPSG:3857

	view: new ol.View({
            // 设置成都为地图中心,此处进行坐标转换, 把 EPSG:4326 的坐标,转换为 EPSG:3857 坐标,因为>OpenLayers 3默认使用的是 EPSG:3857 坐标
            center: ol.proj.transform([104.06, 30.67], 'EPSG:4326', 'EPSG:3857'),
            zoom: 10            //设置地图显示层级为10
        	}),

六、代码

1、地图项目结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-W1E5Sz31-1639115740907)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211209132249105.png)]

2、map.html
<!Doctype html>
<html xmlns='http://www.w3.org/1999/xhtml'>
<head>
    <meta http-equiv='Content-Type' content='text/html;charset=utf-8'>
    <meta http-equiv='X-UA-Compatible' content='IE=edge,chrome=1'>
    <meta content='always' name='referrer'>
    <title>OpenLayers 3 :创建一个地图</title>
    <link href='ol.css ' rel='stylesheet' type='text/css'/>
    <script type='text/javascript' src='ol.js' charset='utf-8'></script>
</head>

<body>

<div id='map' style='width: 1000px;height: 800px;margin: auto'></div>

<script>

    /**
     *  创建地图
     */
    new ol.Map({

        // 设置地图图层
        layers: [

            //创建一个使用Open Street Map地图源的图层
            new ol.layer.Tile({
                source: new ol.source.OSM()
            })

        ],

        // 设置显示地图的视图
        view: new ol.View({
            center: [0,0],       // 设置地图显示中心于经度0度,纬度0度处
            zoom: 10            // 设置地图显示层级为0
        }),

        // 设置显示地图的视图
        // view: new ol.View({
        //     // 设置成都为地图中心,此处进行坐标转换, 把 EPSG:4326 的坐标,转换为 EPSG:3857 坐标,因为>OpenLayers 3默认使用的是 EPSG:3857 坐标
        //     center: ol.proj.transform([104.06, 30.67], 'EPSG:4326', 'EPSG:3857'),
        //     zoom: 10            //设置地图显示层级为10
        // }),


        //设置显示地图的视图
        // view: new ol.View({
        //     center: [104.06, 30.67],   // 设置地图显示中心
        //     projection: 'EPSG:4326',  // 指定投影使用坐标系EPSG:4326
        //     zoom: 10
        // }),

        //设置显示地图的视图
        // view: new ol.View({
        //     center: [104.06, 30.67],   // 设置地图显示中心
        //     projection: 'EPSG:3857',  // 指定投影使用坐标系EPSG:3857
        //     zoom: 10
        // }),



        // 让id为map的div作为地图的容器
        target: 'map'

    })

</script>
</body>
</html>

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大树下躲雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值