我正在使用OpenLayers 2中的Scale Bar Add-in,它没有测地线选项。
我知道Scale Line有一个测地线选项,但考虑到Scale Bar有更多种类的选项,在这个中引入geodesic选项会很不错。
有人可以帮我吗?如何在Scale Bar Add-in中引入geodesic选项?
谢谢
答案 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;
我希望这很有用。