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 发行.它实现访问地理空间数据的方法都符 ...
随机推荐
- SpringBoot 开发案例之参数传递的正确姿势
前言 开发这么多年,肯定还有不少小伙伴搞不清各种类型的参数是如何传递的,很多同学都是拿来即用,复制粘贴一把撸,遇到问题还是一脸懵逼. 姿势 学习参数传递的正确姿势,先说怎么做,再说为什么,本质上还是复 ...
- C++ 大作业资料总结
一般 C++ 大作业都是用 Qt 来写,Qt 本身带了很多例子,详见:https://doc.qt.io/qt-5/qtexamples.html# 如果你想偷懒的话,直接拿来改就好,或者去 Gith ...
- 史上最轻松入门之Spring Batch - 轻量级批处理框架实践
从 MariaDB 一张表内读 10 万条记录,经处理后写到 MongoDB . Batch 任务模型 具体实现 1.新建 Spring Boot 应用,依赖如下: <!-- Web 应用 -- ...
- 基于 HTML5 + Canvas 实现楼宇自控系统
前言 楼宇自控是指楼宇中电力设备,如电梯.水泵.风机.空调等,其主要工作性质是强电驱动.通常这些设备是开放性的工作状态,也就是说没有形成一个闭环回路.只要接通电源,设备就在工作,至于工作状态.进程.能 ...
- Django 从零开始
Django在Python的web开发框架中属于重量级的框架,功能多而全,但是相对的体积和坑也会比较多,但是其实学习Python的web开发个人觉得Django其实会比Flask好上手,特别是0基础的 ...
- unity 内置shader
几个有用的Unity 内置shader: (一)Standard RenderingMode:Opaque为实体渲染,更改Color的透明通道不会有影响:Cutout会把图片的透明通道显示出来,非严格 ...
- UI控件拖动失效
问题描述:ui Slider滑块点击时需要特效,直接在滑块上添加OnPointerDown事件与OnPointerUp事件,但是当拖动时会直接触发OnPointerUp事件,而且拖动相关的事件失效 原 ...
- SpringBoot整合MybatisPlus3.X之SQL注入器(九)
pom.xml <dependencies> <dependency> <groupId>org.springframework.boot</groupId& ...
- PHP 输出XML字符串
<?php echo htmlentities( $xml_string);?>
- 详细讲解IPython
ipython是一个python的交互式shell,比默认的python shell好用得多,支持变量自动补全,自动缩进,支持bash shell命令,内置了许多很有用的功能和函数.学习ipython ...