Openlayers Projection导致经纬度颠倒问题
问题:
openlayers3调用TileWMS接口,实现Openlayers加载Geoserver转发的ArcGIS切片时,web墨卡托(wkid3857)没有问题,但是WGS84(wkid4326)就不行。
问题排查:
1、查看控制台,发现报错400,这个是由于格式错误引起的

2、于是我把链接复制出来粘贴到浏览器观察,发现是BBOX的经纬度反了。
&BBOX=39.387925644409165%2C115.94328881619128%2C39.99706766190172%2C116.55243083368384
变成了BBOX=纬度&经度&纬度&经度了
3、我把BBOX修正,再放到浏览器打开,发现可以正常加载。看来问题找到了,就是构造的时候bbox的问题,可这是怎么造成的呢?
4、网上都没找到原因,实在不行了决定咬咬牙跟源码吧。
5、源码跟到这里发现了问题:获取坐标系的坐标轴顺序,如果是"ne"就把bbox构造经纬度反一反。为啥呢?

6、原来openlayers在操作地图时,如果用到坐标系的,则会根据坐标系先判断一下坐标顺序,WGS84默认顺序是(纬度,经度,高度),web墨卡托默认是(x,y,z)

7、我们用的EPSG:4326的坐标系,顺序是neu,源码中被if条件捕获,bbox被转了
解决方案:
1、最终找到问题,就要把他消灭,我们用openlayers自定义坐标系的方法,重写一下"EPSG:4326",将它的axisOrientation改为enu
var projection = new ol.proj.Projection({
code: 'EPSG:4326',
axisOrientation: 'enu'
});
2、至此将修改完的projection传给ol.map.view,再加载,就可以了
map = new ol.Map({
target: "map",
layers: [new ol.layer.Tile({
source: new ol.source.TileWMS({
url: "http://10.19.151.238:8080/geowebcache/service/wms",
params: { 'LAYERS': 'beijing', format: 'image/png', SRS: 'EPSG:4326' },
tileGrid: tileGrid
})
})],
view: new ol.View({
center: [116.47202, 40.291],
resolutions: resolutions,
resolution: 0.00475892201166056,
projection: projection,
extent: fullExtent
//zoom: 3
})
});
3、最后附上坐标系可能的轴顺序:常用的有(enu,neu,wnu)

Openlayers Projection导致经纬度颠倒问题的更多相关文章
- Openlayers Overlay导致偏移
说明: 在做项目过程中,用overlay做了一个infowindow弹窗,但是在使用过程中发现一个bug:overlay.setPosition以后,会出现偏移,但是拖动一下地图或者点击一下地图其他地 ...
- openlayers 学习笔记之1
1. 为Web Gis客户端开发的javascript 框架 百度文库中的教程:入门经典> 1) 初始化map: map = new OpenLayers.Map(mapContainerNam ...
- OpenLayers中的球面墨卡托投影
最近看OpenLayers,研究到地图投影时找到官方的文档,就翻译了一下,由于英文能力差,翻译不好的地方,请看原文 原文地址:http://docs.openlayers.org/library/sp ...
- OpenLayers学习笔记2——坐标转换问题
参照别人的添加marker的demo来改造时,发现无论怎样更改经纬度,都是停留在同一个位置.过了一两天突然想起可能是坐标参考的问题,尝试搜了一下,果然是这个问题.问题是这样子的: WMTS中地图的坐标 ...
- OpenLayers项目分析——(一)项目介绍
OpenLayers 是由MetaCarta公司开发的,用于WebGIS客户端的JavaScript包,目前的最高版本是2.7 V,通过BSD License 发行.它实现访问地理空间数据的方法都符合 ...
- (转)PostGIS+QGIS+GeoServer+OpenLayers实现数据的存储、服务的发布以及地图的显示
http://blog.csdn.net/gisshixisheng/article/details/41575833 标题比较长,主要呢是实现以下几点: 1.将shp数据导入到PostGIS中: 2 ...
- OpenLayers使用点要素作为标记
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...
- OpenLayers添加地图标记
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head ...
- Openlayers简介
OpenLayers 是由MetaCarta公司开发的,用于WebGIS客户端的 JavaScript包,目前的最高版本是2.5 V,通过BSD License 发行.它实现访问地理空间数据的方法都符 ...
随机推荐
- mac外接显示器 字体发虚解决方案
描述 今天买的LG性价比之王21:9的2k显示器到了,但是连接mbp后发现,字体发虚,模糊 Macbook 外接显示器默认为 TV 模式,TV 渲染模式下,文字效果非常非常非常差 解决 下载 patc ...
- webpack 4 移除 CommonsChunkPlugin,取而代之的是两个新的配置项(optimization.splitChunks 和 optimization.runtimeChunk
默认方式 webpack模式模式现在已经做了一些通用性优化,适用于多数使用者. 需要注意的是:默认模式只影响按需(on-demand)加载的代码块(chunk),因为改变初始代码块会影响声明在HTML ...
- 彻底解决 Mechanism level: Failed to find any Kerberos tgt
错误描述 Secure Client Cannot Connect ([Caused by GSSException: No valid credentials provided(Mechanism ...
- OptimalSolution(4)--字符串问题(2)进阶
一.将整数字符串转成整数值 二.判断字符数组中是否所有的字符都只出现过一次 三.在有序但含有空的数组中查找字符串 四.数组中两个字符串的最小距离 五.添加最少字符使字符串整体都是回文字符串 六.括号字 ...
- SpringBoot注入配置文件的3种方法
方案1:@ConfigurationProperties+@Component 定义spring的一个实体bean装载配置文件信息,其它要使用配置信息是注入该实体bean /** * 将配置文件中配置 ...
- 如何在sprintf函数中输出百分号(%)等特殊符号
php中的sprinf可以格式化字符串的数据类型.今天遇到了想在其中输出%,可难倒我了. $query = sprintf("select * from books where %s li ...
- 设计模式C++描述----16.状态(State)模式
一. 举例 一般汽车发动机工作时有四种状态,吸气.压缩.做功和排气. 在运行时,不同的状态会有不同的行为,当前的状态机在适当的时候会过渡到下一状态. 其实用户在使用时根本不知道当前的状态,也无需知道当 ...
- 实战SpringCloud响应式微服务系列教程(第九章)使用Spring WebFlux构建响应式RESTful服务
本文为实战SpringCloud响应式微服务系列教程第九章,讲解使用Spring WebFlux构建响应式RESTful服务.建议没有之前基础的童鞋,先看之前的章节,章节目录放在文末. 从本节开始我们 ...
- 9、pytest -- 集成文档测试
目录 1. 集成doctest模块 1.1. 通过指定文本文件的方式 1.2. 通过编写文档字符串的方式 1.3. 指定额外的选项 2. 失败时继续执行 3. 指定输出的格式 4. 文档测试中使用fi ...
- windows下安装nginx和基本配置
1.下载并安装nginx 到nginx官网上下载相应的安装包,http://nginx.org/en/download.html: 下载之后进行解压,将解压后的文件放到自己心仪的目录下,如下图所示: ...