首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Openlayers 3中心图

Openlayers 3中心图
EN

Stack Overflow用户
提问于 2015-01-07 21:39:59
回答 3查看 28.7K关注 0票数 17

我唱OpenLayers 3来显示一张地图。我想使用latLon坐标将地图居中。我首先使用的是quickstart code。使用这段代码,我不能改变地图的中心。我想这和Spherical Mercator projection有关。唯一的问题是,我只有后来的坐标。

有人知道如何在openlayers v3中将地图居中吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-07 22:04:45

您需要使用将经度/经度坐标转换为正确的投影(或坐标系

代码语言:javascript
复制
var olCoordinates = ol.proj.transform([lon, lat],"WGS84", "EPSG:900913")

现在,您可以使用olCorrdinates设置中心。

不同的投影有不同的代号。WGS84是“正常”的经度/经度,而EPSG:900913是经常用于谷歌地图、openstreetmap和必应等网络地图的投影。

我认为WGS84/ OpenLayers :4326(经度/纬度)转换支持WGS84/EPSG:4326的内置支持,但如果您需要转换到其他坐标系或从其他坐标系转换,可以包含proj4js库。Openlayers将与这个库集成,并能够以相同的方式进行转换。

转换文档http://openlayers.org/en/v3.1.1/apidoc/ol.proj.html

Proj4库https://github.com/proj4js/proj4js

编辑:在您引用的示例中,中心位置实际上是用经度/纬度设置的。

代码语言:javascript
复制
view: new ol.View({
    center: ol.proj.transform([37.41, 8.82], 'EPSG:4326', 'EPSG:3857'),
    zoom: 4
})

EPSG:4326实际上与WGS84相同,EPSG:3857与EPSG:900913相同。这非常令人困惑。我自己也去过那里。

您只需将数字37.41和8.82更改为您的经度/经度坐标。如果你想在初始化后改变中心位置,你需要使用setCenter();

代码语言:javascript
复制
map.getView().setCenter(ol.proj.transform([lon, lat], 'EPSG:4326', 'EPSG:3857'))
票数 29
EN

Stack Overflow用户

发布于 2016-04-12 22:50:43

OpenLayers引入了ol.proj.fromLonLatol.proj.toLonLat函数on Mar. 2015

要使地图居中,您可能需要在初始化期间使用它

代码语言:javascript
复制
view: new ol.View({
        center: ol.proj.fromLonLat([lon, lat])
      })

或在创建地图之后

代码语言:javascript
复制
map.getView().setCenter(ol.proj.fromLonLat([lon, lat]))

虽然它们是ol.proj.transformjust wrappers,但我发现它们更易于使用。

默认的Web墨卡托是EPSG:4326EPSG:3857

Ole Borgersen states一样,WGS84与我们使用的长纬度坐标EPSG:4326是相同的。

代码语言:javascript
复制
ol.proj.fromLonLat([lon, lat]);
// is equivalent of
ol.proj.transform([lon, lat], 'EPSG:4326', 'EPSG:3857')

ol.proj.toLonLat([lon, lat]);
// is equivalent of
ol.proj.transform([lon, lat], 'EPSG:3857', 'EPSG:4326')
票数 13
EN

Stack Overflow用户

发布于 2019-05-17 00:49:34

取决于你是如何使用的?

对于仅限浏览器使用:

代码语言:javascript
复制
<script src='https://cdn.rawgit.com/openlayers/openlayers.github.io/master/en/v5.3.0/build/ol.js'></script>


  ol.proj.transform() 

  ol.proj.transform([long, lat], 'EPSG:4326', 'EPSG:3857');

供js-app使用

代码语言:javascript
复制
   // for projection
  import {transform} from 'ol/proj.js';

  // use this one : transform([-118.246521, 34.049039], 'EPSG:4326', 'EPSG:3857')





   var map = new Map({
    layers: layers,
    target: 'map',
    view: new View({
      //center: [-118.246521, 34.049039],
        center: transform([-118.246521, 34.049039], 'EPSG:4326', 'EPSG:3857'),
      zoom: 16
    })
  });
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27820784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档