坐标

是否已经知道ol.proj.transform的功能了?你应该知道的,因为有API文档。它主要用于坐标转换,它的第一个参数是ol.Coordinate类型的坐标,后面两个参数依次是当前坐标所用的坐标系,及转换后的坐标所用的坐标系,ol.proj.transform([104.06, 30.67], 'EPSG:4326', 'EPSG:3857')就能把EPSG:4326的坐标[104.06, 30.67]转换为EPSG:3857的坐标。

在了解这个函数的功能后,可能不禁会问:为什么要弄的如此复杂,是不是还有很多其他的坐标系?是的,确实存在很多其他的坐标系,如果可以选择的话,应该没人愿意这样。道理如同这个世界上存在各种各样的货币一样。在下一个小节,就会详细介绍多个坐标系及存在的原因。但在此之前,我们得先了解一个有意义的坐标应该如何定义。

如果单独地看[45.06, 30.67],这是没有任何意义的两个数字,在不同的场景,不同的人眼里,它们可以是某个仪器的两个测量值,也可以是学生的考试成绩,还可以是某个坐标。大家或许已经意识到,场景是非常重要的,假如我们定义这两个数字表示的是一个地理位置的坐标,那请问你知道这个坐标所指的具体位置吗?肯定是不能的。因为我们并不知道这个坐标里面的数字使用什么单位,是度?是米?还是其他的单位?如果添加上单位,也还不够,假设单位是度,我们还是不知道坐标中的前一个数字是经度,还是纬度。即使定义经纬度,也还不够,因为还有很多不确定的东西,比如这个坐标相对的原点在哪里?二维还是三维,哪个方向为正向?

一个有意义的坐标并不是我们看上去那样简单,特别是地理坐标,但初学者往往会忽略这点,从而造成在应用中经常出现定位错误。