繁体   English   中英

openlayers map 中心问题

[英]openlayers map center issue

我对使用 openlayers 非常陌生。 下面的教程教如何显示 map 并在本地构建,但问题是我无法更改 map 的中心。 即使我更改位置,它也会显示 map 的“零”点。

https://openlayers.org/en/latest/doc/tutorials/bundle.html

下面是.js的例子和.html,问题是中心:我不能改变map中心

 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>

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

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

view: new ol.View({
    center: [0,0],
    projection: 'EPSG:4326',
    zoom: 0
})

投影对于进一步的使用非常重要。 如果您在特定投影中有一些数据,Openlayers 无法在具有另一个投影的 map 上显示它们。 例如,如果您在 WGS 84 中有一些数据,则不能在默认视图上使用它们(因为它是 Web Mercator)。
因此,在选择视图投影之前,请阅读限制。 例如,底图并非在每个投影中都可用,就像普通图层一样。

此外,您还可以使用另一个选项。 动态投影整个层(在客户端浏览器中)需要一个庞大的过程,但我们总是可以投影一个点或单个特征,并在我们的层或基础 map 中使用它们。 在您的情况下,您只能投影您的中心点并在 Web 墨卡托中使用 map。 对于此选项,您需要像这样使用fromLonLat()

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

希望清楚。

试试这个为你的中心:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM