如何在OpenLayers 2中为Scale Bar加载项实现geodesic选项?

时间:2014-09-04 02:07:55

标签: javascript openlayers geodesic-sphere

我正在使用OpenLayers 2中的Scale Bar Add-in,它没有测地线选项。

我知道Scale Line有一个测地线选项,但考虑到Scale Bar有更多种类的选项,在这个中引入geodesic选项会很不错。

有人可以帮我吗?如何在Scale Bar Add-in中引入geodesic选项?

谢谢

1 个答案:

答案 0 :(得分:1)

我想我解决了它。

首先,我添加了一个测地线选项,因此用户可以选择是否需要测地测量。

其次,我创建了这个函数(基于ScaleLine):

getGeodesicRatio: function() {
    var res = this.map.getResolution();
    if (!res) {
        return;
    }

    var curMapUnits = this.map.getUnits();
    var inches = OpenLayers.INCHES_PER_UNIT;

    // convert maxWidth to map units
    var maxSizeData = this.maxWidth * res * inches[curMapUnits];
    var geodesicRatio = 1;
    if(this.geodesic) {
        var maxSizeGeodesic = (this.map.getGeodesicPixelSize().w ||
            0.000001) * this.maxWidth;
        var maxSizeKilometers = maxSizeData / inches["km"];
        geodesicRatio = maxSizeGeodesic / maxSizeKilometers;
    }
    return geodesicRatio;
},

第三,我在其他函数中插入了测地比:

"getComp"
var ppdu = OpenLayers.DOTS_PER_INCH * system.inches[unitIndex]
    / this.getGeodesicRatio() / this.scale;

"setSubPros"
var ppdu = OpenLayers.DOTS_PER_INCH * system.inches[unitIndex]
    / this.getGeodesicRatio() / this.scale;

我希望这很有用。