Радиус радиуса листового круга зависит от кожей y / lng

StackOverflow https://stackoverflow.com//questions/25034291

  •  21-12-2019
  •  | 
  •  

Вопрос

Я использую Mapbox / Reaflet, чтобы отобразить изображение человеческого тела, а не обычной карты.

Я использую листовую розыгрыш, и мне нужно иметь возможность создавать круг и перемещать его при сохранении его радиуса.Однако, когда я двигаю его к нижней части карты / экрана, размер увеличивается экспоненты.Я хочу, чтобы это осталось одинаковым размером.

Я предполагаю, что это что-то связано с проекцией или 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. будет делать, но имеет такую же проблему.

gif выпуска здесь:

Введите описание изображения здесь

Это было полезно?

Решение

Оказывается, есть нагрузка на тодос в листовом коде 0,7 ... включая этот маленький драгоценный камень:

// 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