[英]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 projection
或EPSG: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.