簡體   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