リーフレット+ Proj4リーフレット+ EPSG3995 + WMS


8

LeafletのNorth Polar Stereographicプロジェクション(EPSG3995)でWMSレイヤーをサポートしようとしていますが、機能させることができません。

私はProj4Leafletを使用し、GeoServerによって指定された解像度で投影を作成しました(WMSレイヤーはGeoServerによって提供されます。結合された画像を参照してください)。

EPSG3995の解像度

次のjsfiddleで:https ://jsfiddle.net/gaubert/Lyojcrzo/ 私はそれを実装しようとしましたが、リーフレットマップをズームすると、タイルが適切に配置されていないことがわかりますか?

それを機能させるには何が欠けていますか?変換またはプロジェクトメソッドを実装する必要がありますか?

回答:


5

ここにはいくつかの問題があります。


まず、http//leafletjs.com/examples/wms/wms.htmlから引用させてください(強調は私のものです):

Leafletがサポートする座標系が非常に少ないことにも注意してください:CRS:3857CRS:3395およびCRS:4326(のドキュメントを参照L.CRS)。WMSサービスがこれらの座標系で画像を提供しない場合は、Proj4Leafletを使用して、Leafletで別の座標系を使用する必要がある場合があります。それ以外は、マップを初期化するときに適切なCRSを使用するだけで、追加されたWMSレイヤーがそれを使用します。

var map = L.map('map', {
    crs: L.CRS.EPSG4326
});

var wmsLayer = L.tileLayer.wms('http://demo.opengeo.org/geoserver/ows?', {
    layers: 'nasa:bluemarble'
}).addTo(map);

フィドル内のコードはその逆を行い、CRSをマップのオプションとしてではなく、wmsレイヤーのオプションとして指定します。

wmsBKLayer = new L.tileLayer.wms('http://eumetview.eumetsat.int/geoserv/wms', {
    layers: 'bkg-raster:bkg-raster',
    crs: customCRS
}

var map = new L.map('map', {
   // No CRS option here!!
});

マップオプションCRSを指定すると、問題ありません。


次に、オブジェクトのインスタンス化。リーフレットは、クラス(たとえばL.TileLayer、クラス)の最初の大文字でキャメルケースを使用し、ファクトリメソッド(たとえばL.tileLayer、ファクトリメソッド)で小文字で始まるキャメルケースを使用します。

var foo = L.tileLayer(...);     // Preferred
var foo = new L.TileLayer(...); // OK, but not preferred
var foo = L.TileLayer(...);     // Nope, one cannot call a class
var foo = new L.tileLayer(...); // Nope nope nope nope, one cannot create an instance of a factory

これが混乱する場合は、« /programming/8698726/constructor-function-vs-factory-functions »をお読みください。


3番目に、https://kartena.github.io/Proj4Leaflet/からの引用:

Leaflet 1.0ベータ1またはLeafletの開発バージョンを使用していますか?次に、Proj4Leafletの開発ブランチを使用する必要があります。

これは、Leaflet 1で動作するproj4leafletのリリースバージョンがないことを意味します。

フィドルでは、Leaflet 1.0.2とproj4leaflet 0.7.2を使用しています。それらは単に一緒に動作しません。

より低いバージョンのLeafletを使用するか、新しいバージョンのproj4leafletをビルド(およびデプロイして使用)します。@liedmanはもはやサポートできないため、proj4leafletはそのメンテナンスに少し助けになる可能性があることに注意してください。

時間があれば、Leaflet 1.0.0と互換性のある新しいリリースを支援するために、現在のメンテナに連絡することをお勧めします。


これら3つの問題に対処すれば、すべてが再び機能します。実用的な例を参照してください:

https://playground-leaflet.rhcloud.com/giwo/edit?html,output


迅速な回答をいただき、ありがとうございました。すべての問題が修正され、機能します。もう1つ質問があります。なぜ地図全体が表示されず、ヨーロッパの一部しか表示されないのですか。解像度の問題ですか?
zoobert 2016

わかりました、存在しないドキュメントで自分の道を見つけました;-)。境界と原点を定義するために投影で必要でした。追加すると、見栄えがよくなりました。ご協力ありがとうございます。
zoobert '20 / 12/16

どういたしまして。ドキュメントが不足している場合は、Leafletとproj4leafletの両方がドキュメントを改善するためのプルリクエストを喜んで受け取ることを覚えておいてください。
IvanSanchez 2016

マップのcrsとは異なるcrsを持つwmsレイヤーを追加することはできませんか?
セノールozgur
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.