Leaflet 编辑非地理地图中的比例尺

Leaflet 编辑非地理地图中的比例尺,leaflet,Leaflet,我正在制作传单中的非地理地图。由于坐标是笛卡尔坐标,没有地理参考,因此默认情况下不应为m,如下所示(我已禁用比例尺中的英制单位): 是否有任何解决方案可以将比例尺中的100米转换为100米,甚至用其他东西替换m 您希望了解: 或 替换未记录的内部方法通常被视为肮脏的黑客行为,并可能导致混乱。根据我的经验,诺贝尔程序员倾向于信任黑客,而不了解JS原型继承是如何工作的 “稍微干净一点”的方法是读取,然后创建L.Control.Scale的子类,例如: L.Control.Scale.prototy

我正在制作传单中的非地理地图。由于坐标是笛卡尔坐标,没有地理参考,因此默认情况下不应为
m
,如下所示(我已禁用比例尺中的英制单位):

是否有任何解决方案可以将比例尺中的
100米
转换为
100米
,甚至用其他东西替换
m

您希望了解:

替换未记录的内部方法通常被视为肮脏的黑客行为,并可能导致混乱。根据我的经验,诺贝尔程序员倾向于信任黑客,而不了解JS原型继承是如何工作的

“稍微干净一点”的方法是读取,然后创建
L.Control.Scale
的子类,例如:

L.Control.Scale.prototype._updateMetric = function (maxMeters) {
    var meters = this._getRoundNum(maxMeters),
        label = meters + ' units';

    this._updateScale(this._mScale, label, meters / maxMeters);
};
var myScaleControl = L.control.scale().addTo(map);
L.Control.MeterlessScale = L.Control.Scale.extend({
    _updateMetric: function (maxMeters) {
        var meters = this._getRoundNum(maxMeters),
            label = meters + ' units';

        this._updateScale(this._mScale, label, meters / maxMeters);
    }
});

var scale = (new L.Control.MeterlessScale()).addTo(map);
人们不应该害怕阅读传单的源代码。同时,在开始之前,请阅读JS原型继承,并阅读本手册自己的教程



同样,假定
L.CRS
distance
方法返回的距离以米为单位,并且不能通知任何呼叫者该CRS的单位;因此,
L.Control.Scale
假设距离以米为单位。从架构上讲,没有一种简单的方法可以根据CRS提取距离单位(很遗憾)。

谢谢Ivan。但是,在向控件类添加新属性时,我遇到类型错误。我在Angular环境中创建应用程序。Angular(和typescript)不是我的专长。但是,请考虑执行<代码> var MealRealStase= L.Prime.Stand .Expand(…)<代码>,然后<代码>新的无量程(…)< /代码>。你将跳过一些传单惯例,但应该没问题。
var myScaleControl = L.control.scale();
myScaleControl._updateMetric = function (maxMeters) {
    var meters = this._getRoundNum(maxMeters),
        label = meters + ' units';

    this._updateScale(this._mScale, label, meters / maxMeters);
};
myScaleControl.addTo(map);
L.Control.MeterlessScale = L.Control.Scale.extend({
    _updateMetric: function (maxMeters) {
        var meters = this._getRoundNum(maxMeters),
            label = meters + ' units';

        this._updateScale(this._mScale, label, meters / maxMeters);
    }
});

var scale = (new L.Control.MeterlessScale()).addTo(map);