2017-06-21 2 views
1

私は非常に地図のトピックにはかなり新しく欲求不満です。さまざまな図書館などでたくさんの例を読んだ後、私はさらに混乱しました。だから私は簡単な例から始めます。ここでは、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サーバーを見つける必要がありますか?

答えて

1

あなたの投影定義が正しくありません。私はproj4jを使用することを推奨できます:

// projection definition (http://www.spatialreference.org/ref/epsg/wgs-84-nsidc-sea-ice-polar-stereographic-north/proj4js/) 
proj4.defs('EPSG:3413', "+proj=stere +lat_0=90 +lat_ts=70 +lon_0=-45 +k=1 +x_0=0 +y_0=0 +ellps=WGS84 +datum=WGS84 +units=m +no_defs"); 

var transformedCoordinate = ol.proj.transform([85,85], 'EPSG:4326', 'EPSG:3413'); 
// results in [415170.5793604837, 348369.4800170395] 
+0

正しいガイダンスのために多くのご協力ありがとうございます。将来のユーザーにも言及する必要があります。私はかなりの例を見てから、私は投影定義の表記に従いました。もちろん、このためには、必ずしもそうでないol.projメソッドに投影コードがすでに定義されている(または何らかの形で知られている)必要があります。私はそれが4-5の投影を知っていると思います、そして残りは明示的に定義されるべきです。再度、感謝します! – pakoun

関連する問題