猿问

openlayers 地图中心问题

我对使用 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>


尚方宝剑之说
浏览 463回答 2
2回答

郎朗坤

每个 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({&nbsp; &nbsp; center: [0,0],&nbsp; &nbsp; projection: 'EPSG:4326',&nbsp; &nbsp; zoom: 0})投影对于进一步使用非常重要。如果您在特定投影中有一些数据,Openlayers 无法将它们显示在具有另一个投影的地图上。例如,如果您在 WGS 84 中有一些数据,则不能在默认视图中使用它们(因为它是 Web Mercator)。因此,在选择视图投影之前,请阅读有关限制。例如,底图并非像普通图层一样在每个投影中都可用。此外,您还可以使用另一个选项。动态投影整个图层(在客户端浏览器中)需要一个庞大的过程,但我们总是可以投影一个点或单个要素,并在我们的图层或底图之间使用它们。在您的情况下,您只能投影您的中心点并在 Web Mercator 中使用地图。对于此选项,您需要fromLonLat()像这样使用:center: ol.proj.fromLonLat([0,0])希望说清楚。

慕尼黑8549860

为您的中心试试这个:center:&nbsp;ol.proj.fromLonLat([longitude,latitude])
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答