Радиус радиуса листового круга зависит от кожей y / lng
Вопрос
Я использую 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, и все это было исправлено!