基于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);
}
//--

更多相关文章

  1. 为什么我收到此错误:“未捕获的TypeError:无法读取未定义的属性'标
  2. 如何使函数等到对象的值未定义为js setTimeout
  3. JavaScript正则表达式定义字符集
  4. Angularjs - NgTable在重新加载时未定义
  5. 在聚焦输入时,在iOS(和所有移动设备)上自定义滚动
  6. 使用bootstrap模式框的自定义选择框错误
  7. element.replaceWith在自定义指令的链接中仅在第一次调用时工作
  8. AngularJS:TypeError:无法读取未定义的属性'get'?
  9. 自定义ComboBox焦点不会切换到选择elem并且eventBubble不会停止

随机推荐

  1. Android(安卓)分享功能的实现
  2. android 五种Log的意思
  3. Android电话拨号器
  4. arcgis for android 离线切片加载与geoda
  5. Android:如何实现例如iOS的listview 的弹
  6. [Android] 启动无线与网络设置的Action__
  7. 2011.12.06——— android 带边框的Image
  8. Android 默认把触摸屏show touches打开
  9. Android 9.0 (P版本) SystemServer中的服
  10. android中设置控件获得焦点