自定义CRS:如何获取传单比例控件以显示mm(毫米)和um(微米)

时间:2019-04-26 20:03:35

标签: leaflet

反正有没有要让传单显示小于一米的值?例如,刻度控件上的mm(毫米)还是um(微米)?

或者如果有插件可以做到这一点?

我有一个带有使用虚拟显微镜图像的自定义CRS的自定义地图。

我使用以下代码创建值小于米的地图,但是比例尺控件的确很宽,不会低于米:

for (int i=0; i<N-2; i++){
        if (((10<=S[i]) && (S[i]<=100)) && ((10<=S[i+1]) && (S[i+1]<=100)) && ((10<=S[i+2]) && (S[i+2]<=100))){
            canBeStarted = true;
            whichDayItCanBeStarted = i;
        }
    }

    cout << whichDayItCanBeStarted << endl;

1 个答案:

答案 0 :(得分:1)

处理比例尺度量和(度量)单位四舍五入的特定代码是_updateMetric method

_updateMetric: function (maxMeters) {
    var meters = this._getRoundNum(maxMeters),
        label = meters < 1000 ? meters + ' m' : (meters / 1000) + ' km';

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

请注意,implementation of this._getRoundNum()将返回一个整数,即最小为1

您可能要替换_updateMetric()的实现,以舍入该数字的 factor ,并相应地应用单位后缀,例如:

L.Control.Scale.include({
  _updateMetric: function(maxMeters) {
    var maxMilliMeters = maxMeters * 1000,
        milliMeters = this._getRoundNum(maxMilliMeters),
        label = milliMeters < 1000 ? milliMeters + " mm" : milliMeters / 1000 + " m";

    console.log(this._mScale, label, milliMeters / maxMilliMeters);

    this._updateScale(this._mScale, label, milliMeters / maxMilliMeters);
  }
});

查看working example here