質問

私は、通常の地図ではなく人体の写真を表示するためにMapBox / Leafletを使用しています。

リーフレット描画を使用しています、そして、その半径を維持しながら円を作成して周りに動かすことができる必要があります。ただし、MAP /画面の下部に移動すると、サイズはExponalyyを増加させます。私はそれが同じサイズを維持したいです。

投影やCRSと関係があると思いますが、停止するために何をすべきかわからないと思います。

マイコードは次のとおりです。

    var mapMinZoom = 0;
    var mapMaxZoom = 4;
    var map = L.map('map', {
        maxZoom: mapMaxZoom,
        minZoom: mapMinZoom,
        crs: L.CRS.Simple,
        noWrap: true,
        continuousWorld: true
    }).setView([0, 0], mapMaxZoom);

    var mapBounds = new L.LatLngBounds(
        map.unproject([0, 3840], mapMaxZoom),
        map.unproject([4096, 0], mapMaxZoom));

    map.fitBounds(mapBounds);
    L.tileLayer('/tiles/{z}/{x}/{y}.png', {
        minZoom: mapMinZoom, maxZoom: mapMaxZoom,
        bounds: mapBounds,
        attribution: 'Rendered with <a href="http://www.maptiler.com/">MapTiler</a>',
        noWrap: true,
        continuousWorld: true
    }).addTo(map);

     var touches;

     var featureGroup = L.featureGroup().addTo(map);

     var drawControl = new L.Control.Draw({
         edit: {
             featureGroup: featureGroup
         }
     }).addTo(map);

    map.on('draw:created', function (e) {
        featureGroup.addLayer(e.layer);
    });
.

任意のアイデア?L.circleだけがするだけでなく、同じ問題がありますが、同じ問題があります。

問題のGIF:

Enter Image説明

役に立ちましたか?

解決

リーフレットにはTOSの負荷があります。この小さな宝石を含む:

// TODO Earth hardcoded, move into projection code!

_getLatRadius: function () {
    return (this._mRadius / 40075017) * 360;
},

_getLngRadius: function () {
    return this._getLatRadius() / Math.cos(L.LatLng.DEG_TO_RAD * this._latlng.lat);
},
.

0.8devに更新され、それはすべて固定されています!

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top