基于OpenLayer测量工具的Javascript类定义
16lz
2021-01-22
基于OpenLayer测量工具的Javascript类定义
mapCwgisMeasureTool.js
//定义测量工具插件功能
//mapCwgisMeasureTool.js
//vp:hsg,myk
//create date:2013-08-01
//定义回调函数
//测量距离加入一个点的时候触发事件
function handleMeasurePartial(event) {
}
//测量距离完成的时候触发事件
function handleMeasure(event) {
var geometry = event.geometry;
var units = event.units; //面积或距离单位
var order = event.order; //命令ID
var measure = event.measure;
var out = "";
if (order == 1) {
out += "距离: " + measure.toFixed(3) + " " + mapWrap.UnitsToCHS(units);
}
else {
out += "面积: " + measure.toFixed(3) + " 平方" + mapWrap.UnitsToCHS(units);
}
//显示测量后的结果值
alert(out);
//清除每次测量后的点符号
mapWrap.map.events.clearMouseListener();
if (order == 1) {
measureLengthTool.onClick();
}
else {
measureAreaTool.onClick();
}
//
}
//定义回调函数
//定义测量工具插件功能工具类 长度
mapCwgisMeasureLengthTool = OpenLayers.Class(OpenLayers.Control.Measure, mapCwgisPluginCommand,
{
//定义类 初始化函数
initialize: function (p_mapCwgisClass) {
this.init(p_mapCwgisClass);
//
var handler = OpenLayers.Handler.Path;
this.handlerOptions = handler;
//
//测量控制操作
var sketchSymbolizers = {
"Point": {
graphicName: "cross",
graphicHeight: 8,
graphicWidth: 8,
fillColor: "#FF0000",
fillOpacity: 1,
strokeWidth: 0
},
"Line": {
strokeWidth: 1.5,
strokeOpacity: 1,
strokeColor: "#0000FF"
},
"Polygon": {
strokeWidth: 1.5,
strokeOpacity: 1,
strokeColor: "#0000FF",
fillColor: "#ccccff",
fillOpacity: 0.3
}
};
var style = new OpenLayers.Style();
style.addRules([new OpenLayers.Rule({ symbolizer: sketchSymbolizers })]);
var styleMap = new OpenLayers.StyleMap({ "default": style });
var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;
var options = {
persist: true,
handlerOptions: {
style: "default",
layerOptions: {
renderers: renderer,
styleMap: styleMap
}
}
};
//初始化父类的构造函数
mapCwgisPluginCommand.prototype.initialize.apply(this, [p_mapCwgisClass, handler, options]);
OpenLayers.Control.Measure.prototype.initialize.apply(this, [handler,options]);
//
this.handler = new handler(this, this.callbacks, this.handlerOptions);
//
this.events.on({
"measure": handleMeasure, //测量距离完成的时候
"measurepartial": handleMeasurePartial //测量距离加入一个点的时候
});
},
//---------------------------------------------
CLASS_NAME: "mapCwgisMeasureLengthTool"
});
//定义全局测量长度工具
var measureLengthTool = new mapCwgisMeasureLengthTool(mapWrap);
//向全局工具栏管理类注册
if (cmToolBar != null) {
cmToolBar.addItem(measureLengthTool);
}
//--
//定义测量工具插件功能工具类 面积
mapCwgisMeasureAreaTool = OpenLayers.Class(OpenLayers.Control.Measure, mapCwgisPluginCommand,
{
//定义类 初始化函数
initialize: function (p_mapCwgisClass) {
this.init(p_mapCwgisClass);
//
var handler = OpenLayers.Handler.Polygon;
this.handlerOptions = handler;
//
//测量控制操作
var sketchSymbolizers = {
"Point": {
graphicName: "cross",
graphicHeight: 8,
graphicWidth: 8,
fillColor: "#FF0000",
fillOpacity: 1,
strokeWidth: 0
},
"Line": {
strokeWidth: 1.5,
strokeOpacity: 1,
strokeColor: "#0000FF"
},
"Polygon": {
strokeWidth: 1.5,
strokeOpacity: 1,
strokeColor: "#0000FF",
fillColor: "#ccccff",
fillOpacity: 0.3
}
};
var style = new OpenLayers.Style();
style.addRules([new OpenLayers.Rule({ symbolizer: sketchSymbolizers })]);
var styleMap = new OpenLayers.StyleMap({ "default": style });
var renderer = OpenLayers.Util.getParameters(window.location.href).renderer;
renderer = (renderer) ? [renderer] : OpenLayers.Layer.Vector.prototype.renderers;
var options = {
persist: true,
handlerOptions: {
style: "default",
layerOptions: {
renderers: renderer,
styleMap: styleMap
}
}
};
//初始化父类的构造函数
mapCwgisPluginCommand.prototype.initialize.apply(this, [p_mapCwgisClass, handler, options]);
OpenLayers.Control.Measure.prototype.initialize.apply(this, [handler, options]);
//
this.handler = new handler(this, this.callbacks, this.handlerOptions);
//
this.events.on({
"measure": handleMeasure, //测量距离完成的时候
"measurepartial": handleMeasurePartial //测量距离加入一个点的时候
});
},
//---------------------------------------------
CLASS_NAME: "mapCwgisMeasureAreaTool"
});
//定义全局测量面积工具
var measureAreaTool = new mapCwgisMeasureAreaTool(mapWrap);
//向全局工具栏管理类注册
if (cmToolBar != null) {
cmToolBar.addItem(measureAreaTool);
}
//--
更多相关文章
- 为什么我收到此错误:“未捕获的TypeError:无法读取未定义的属性'标
- 如何使函数等到对象的值未定义为js setTimeout
- JavaScript正则表达式定义字符集
- Angularjs - NgTable在重新加载时未定义
- 在聚焦输入时,在iOS(和所有移动设备)上自定义滚动
- 使用bootstrap模式框的自定义选择框错误
- element.replaceWith在自定义指令的链接中仅在第一次调用时工作
- AngularJS:TypeError:无法读取未定义的属性'get'?
- 自定义ComboBox焦点不会切换到选择elem并且eventBubble不会停止