2016-10-25 6 views
0

オフセット、yはそうのような座標:リーフレットマップは、私はXを使用して大きな画像をレンダリングするためにリーフレットを使用しようとしているのxy

var map = L.map('map', { 
    crs: L.CRS.Simple, 
    attributionControl: false, 
    reuseTiles:true, 
}).setView([0, 0], 1); 

問題は、私は拡大すると、私はオフセットを得るように見えるということです。だから私は継続的に地図をズームするように見える。

私はそれが私がコードにこの間​​違ったを取得していますことを、かなり可能です+ C#とGDIを使用してバックエンドで画像を描画しています

private void DrawLine(int x, int y, int z, int squareSize, Graphics g, Shape shape, Pen drawPen) 
    { 
     Line line = (Line)shape; 

     var scalingFactor = 0.1; 
     var zoom = (z * (scalingFactor)); 

     double startScaledX = (line.StartPoint.X * zoom) + ((squareSize * -1) * x); 
     double startScaledY = (line.StartPoint.Y * -1 * zoom) + ((squareSize * -1) * y); 
     double endScaledX = (line.EndPoint.X * zoom) + ((squareSize * -1) * x); 
     double endScaledY = (line.EndPoint.Y * -1 * zoom) + ((squareSize * -1) * y); 

     var width = Math.Abs(endScaledX - startScaledX); 
     var height = Math.Abs(endScaledY - startScaledY); 

     var startPoint = new System.Drawing.PointF((float)startScaledX, (float)startScaledY); 
     var endPoint = new System.Drawing.PointF((float)endScaledX, (float)endScaledY); 
     var rectDrawBounds = (new RectangleF((float)startScaledX, (float)startScaledY, (float)width, (float)height)); 
     var rectTileBounds = new RectangleF(0, 0, 256, 256); 

     g.DrawLine(drawPen, startPoint, endPoint); 

    } 

私は0,0 [私はでズームイン、ズームアウトならばということに気づきましたズームが完全に機能します。他のすべてが地図をシフトしているようです。

私はあなたが提供できる任意のヘルプに感謝します。

答えて

0

リーフレットのL.CRS.Simpleでは、地図の縮尺がズームレベルごとに2倍になります。換言すれば、ズームレベル0で

scale = 2**z; 

又は

scale = Math.pow(2,z); 

又は

scale = 1<<z; 

又は

、256ピクセルのタイルは、256のマップ単位をカバーします。 1つの地図単位が1ピクセルを超えています。

ズームレベル1では、256ピクセルのタイルは128のマップ単位をカバーします。 1つの地図単位は2ピクセル以上にわたっています。

ズームレベル2では、256ピクセルのタイルは64のマップ単位をカバーします。 1つの地図単位が4ピクセルを超えています。ズームレベルN

、256ピクセルのタイルは、2分の256 Nマップ単位をカバーします。 1つの地図単位は、2 nピクセル以上にわたっています。

参考のため、https://github.com/Leaflet/Leaflet/blob/master/src/geo/crs/CRS.Simple.js

は、それに応じてzscalingFactorzoom計算との関係を修正ご覧ください。

+0

残念ながら、これは問題を解決しません。確かにズーム係数は改善されますが、マップがシフトしています。私はこれが投影とは関係があるかもしれないと思うが、わからない。 –

+0

Nope。スケールを修正すると、座標はズームレベル間で一致し、「シフト」しません。この変化が見られます。デバッグに役立つようにhttps://playground-leaflet.rhcloud.com/wuna/edit?html,outputのようなデバッググリッド層を使用することができます。 – IvanSanchez

関連する問題