私は非常に地図のトピックにはかなり新しく欲求不満です。さまざまな図書館などでたくさんの例を読んだ後、私はさらに混乱しました。だから私は簡単な例から始めます。ここでは、openlayersを使用してWebマップをプロットする簡単なコードを提供します。私の目的は、地図の極座標を投影することです。ウェブマップOpelLayers、極プロジェクション
HTMLファイル:
<html>
<head>
<title>Accessible Map</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="https://openlayers.org/en/v4.2.0/css/ol.css" type="text/css">
<link rel="stylesheet" href="style.css">
<script src="https://openlayers.org/en/v4.2.0/build/ol.js"></script>
<script src="map.js"></script>
</head>
<body>
<div id="map" class="map" ></div>
<script>init();</script>
</body>
</html>
のjavascript:https://openlayers.org/en/latest/doc/faq.html
によれば:
function init(){
var map = new ol.Map({
layers: [
new ol.layer.Tile({
source: new ol.source.OSM()
})
],
target: 'map',
controls: ol.control.defaults({
attributionOptions: /** @type {olx.control.AttributionOptions} */ ({
collapsible: false
})
}),
view: new ol.View({
center: [0, 0],
zoom: 2
})
});
}
このコードは、既定のWebメルカトル図法(3857 EPSG)でマップを生成しながら
私たちがouに登録する必要がある投影を変更するにはr希望するもの。だから私の関数の中で、私が追加:
var epsg3413 = new ol.proj.Projection({ //NSIDC Sea Ice Polar Stereographic North
code: "EPSG:3413",
extent: [-4194304, 4194304, 4194304, -4194304],
units: "m"
});
var epsg4326 = ol.proj.get("EPSG:4326");
を次に表示する方法を、私たちは地図投影を変更することができますので、私が追加:マップがまったく機能していない投影変更に関する追加で
center: ol.proj.transform([85, 85], epsg4326, epsg3413),
projection: epsg3413
を。 Even
console.log(ol.proj.transform([85, 85], epsg4326, epsg3413))
は、同じ点(85,85)を返しています。これは、投影変換が機能していないことを意味します。私がここでやっている明らかな間違いはありますか? ol.source.OSM()はタイル貼りWMSサーバーからデータを取得します。デフォルトではタイルはウェブのメルケータ投影にあります。私はそれらを極座標立体でプロットすることができますか、またはデフォルトである極座標投影でタイルを提供するWMSサーバーを見つける必要がありますか?
正しいガイダンスのために多くのご協力ありがとうございます。将来のユーザーにも言及する必要があります。私はかなりの例を見てから、私は投影定義の表記に従いました。もちろん、このためには、必ずしもそうでないol.projメソッドに投影コードがすでに定義されている(または何らかの形で知られている)必要があります。私はそれが4-5の投影を知っていると思います、そして残りは明示的に定義されるべきです。再度、感謝します! – pakoun