为了账号安全,请及时绑定邮箱和手机立即绑定

openlayers 地图中心问题

openlayers 地图中心问题

尚方宝剑之说 2021-10-29 15:06:46
我对使用 openlayers 很陌生。下面的教程教如何显示地图和构建本地,但问题是我无法更改地图的中心。即使我改变了位置,它也会显示地图的“零”点。https://openlayers.org/en/latest/doc/tutorials/bundle.html下面是 .js 示例和 .html,问题是中心:我无法更改地图中心 import 'ol/ol.css'; import {Map, View} from 'ol'; import TileLayer from 'ol/layer/Tile'; import OSM from 'ol/source/OSM'; const map = new Map({   target: 'map',   layers: [     new TileLayer({       source: new OSM()     })  ],  view: new View({    center: [0, 0],    zoom: 0  })});<!DOCTYPE html><html>  <head>    <meta charset="utf-8">    <title>Using Parcel with OpenLayers</title>    <style>      #map {        width: 400px;        height: 250px;      }    </style>  </head>  <body>    <div id="map"></div>    <script src="./index.js"></script>  </body></html>
查看完整描述

2 回答

?
郎朗坤

TA贡献1921条经验 获得超9个赞

每个 GIS 地图都有一个坐标系。GIS Web 应用程序与桌面 GIS 地图非常相似,因此它们也有一个坐标系。在 OpenLayers 中称为投影。


在 OpenLayers 中,每个 Web 应用程序都由一个Map()需要view()显示地图的类组成。默认情况下,每次view()使用Web Mercator projection或EPSG:3857作为其投影。所以在你的代码中,你应该把中心放在EPSG:3857坐标系中。如果要在 WGS 84 或经纬度数字中使用中心坐标,则应将视图投影更改为EPSG:4326如下所示:


view: new ol.View({

    center: [0,0],

    projection: 'EPSG:4326',

    zoom: 0

})

投影对于进一步使用非常重要。如果您在特定投影中有一些数据,Openlayers 无法将它们显示在具有另一个投影的地图上。例如,如果您在 WGS 84 中有一些数据,则不能在默认视图中使用它们(因为它是 Web Mercator)。

因此,在选择视图投影之前,请阅读有关限制。例如,底图并非像普通图层一样在每个投影中都可用。


此外,您还可以使用另一个选项。动态投影整个图层(在客户端浏览器中)需要一个庞大的过程,但我们总是可以投影一个点或单个要素,并在我们的图层或底图之间使用它们。在您的情况下,您只能投影您的中心点并在 Web Mercator 中使用地图。对于此选项,您需要fromLonLat()像这样使用:


center: ol.proj.fromLonLat([0,0])

希望说清楚。


查看完整回答
反对 回复 2021-10-29
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

为您的中心试试这个:

center: ol.proj.fromLonLat([longitude,latitude])


查看完整回答
反对 回复 2021-10-29
  • 2 回答
  • 0 关注
  • 462 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信