一.生成唯一码guid
function guid() {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {
var r = Math.random()*16|0, v = c == 'x' ? r : (r&0x3|0x8);
return v.toString(16);
});
}
二、设置日期
sessionStorage.localuserTime=new Date().toLocaleString();//2019/8/21 上午9:09:09
let s=new Date();//Wed Aug 21 2019 09:16:22 GMT+0800 (中国标准时间)
let s=s.getFullYear() + '-' + (s.getMonth() + 1) + '-' + s.getDate() + ' ' + s.getHours() + ':' + s.getMinutes() + ':' + s.getSeconds(); //2019-8-21 9:29:10
let s=new Date().getTime();//时间戳1566349967894
let s=new Date().toLocaleString();//2019/8/21 上午9:08:21
let s=new Date().toLocaleTimeString();//上午9:08:21、
三、信息框拖拽
function bookMarkMove(){
$('.bookMarkBoxFrame').on({//信息窗口拖拽
mousedown: function(e){
var el=$(this);
var os = el.offset(); dx = e.pageX-os.left, dy = e.pageY-os.top;
$(document).on('mousemove.drag', function(e){ el.offset({top: e.pageY-dy, left: e.pageX-dx}); });
},
mouseup: function(e){ $(document).off('mousemove.drag');}
})
}
四、.本地存储和会话存储
HTML5的WebStorage提供了两种API:localStorage(本地存储)和sessionStorage(会话存储)。
1、生命周期:localStorage:localStorage的生命周期是永久的,关闭页面或浏览器之后localStorage中的数据也不会消失。localStorage除非主动删除数据,否则数据永远不会消失。
sessionStorage的生命周期是在仅在当前会话下有效。sessionStorage引入了一个“浏览器窗口”的概念,sessionStorage是在同源的窗口中始终存在的数据。只要这个浏览器窗口没有关闭,即使刷新页面或者进入同源另一个页面,数据依然存在。但是sessionStorage在关闭了浏览器窗口后就会被销毁。同时独立的打开同一个窗口同一个页面,sessionStorage也是不一样的。
2、存储大小:localStorage和sessionStorage的存储数据大小一般都是:5MB
3、存储位置:localStorage和sessionStorage都保存在客户端,不与服务器进行交互通信。
4、存储内容类型:localStorage和sessionStorage只能存储字符串类型,对于复杂的对象可以使用ECMAScript提供的JSON对象的stringify和parse来处理
5、获取方式:localStorage:window.localStorage;;sessionStorage:window.sessionStorage;。
6、应用场景:localStoragese:常用于长期登录(+判断用户是否已登录),适合长期保存在本地的数据。sessionStorage:敏感账号一次性登录;
WebStorage的优点:
(1)存储空间更大:cookie为4KB,而WebStorage是5MB;
(2)节省网络流量:WebStorage不会传送到服务器,存储在本地的数据可以直接获取,也不会像cookie一样美词请求都会传送到服务器,所以减少了客户端和服务器端的交互,节省了网络流量;
(3)对于那种只需要在用户浏览一组页面期间保存而关闭浏览器后就可以丢弃的数据,sessionStorage会非常方便;
(4)快速显示:有的数据存储在WebStorage上,再加上浏览器本身的缓存。获取数据时可以从本地获取会比从服务器端获取快得多,所以速度更快;
(5)安全性:WebStorage不会随着HTTP header发送到服务器端,所以安全性相对于cookie来说比较高一些,不会担心截获,但是仍然存在伪造问题;
(6)WebStorage提供了一些方法,数据操作比cookie方便;
setItem (key, value) —— 保存数据,以键值对的方式储存信息。
getItem (key) —— 获取数据,将键值传入,即可获取到对应的value值。
removeItem (key) —— 删除单个数据,根据键值移除对应的信息。
clear () —— 删除所有的数据
key (index) —— 获取某个索引的key
eg:let userTime=sessionStorage.localuserTime
五、遇到问题
1.图层变换,保存失败:数据格式错误(string、number);
2.隐藏图形:fwFeatureLayer.setDefinitionExpression("NYSJZT!='-1'");//不显示-1状态graphics
3.窗口定位:let ex = new Extent();
ex.spatialReference = map.extent.spatialReference;
ex.xmin = Number(xmin);
ex.ymin = Number(ymin);
ex.ymax = Number(ymax);
ex.xmax = Number(xmax);
map.setExtent(ex);
4.事件绑定与解除
dojo绑定事件的方法:
a).on(obj,evtType,callback);//该方法绑定事件后,可通过disconnect()进行事件的解绑
b).dojo.connect(obj,evtType,callback)或者connect.connect(obj,evtType,callback);//绑定事件
例如:var handle=dojo.connect(obj,"click",callback);dojo.disconnect(handle);//移除事件
js 绑定事件
a).objNode.οnclick=function(){}//不能解绑事件
b).objNode.addEventListener(evtType,callback,false);//可以解绑事件
解绑事件:objNode.removeEventListener(evtType,callback,false);
5.FeatureLayer.applyEdits函数说明
函数形式:applyEdits(adds?, updates?, deletes?, callback?, errback?);
例如分割实例:var colonGeo = features[0].geometry;
var oldjson = features[0].toJson();
__drawToolbar.deactivate();
var geo1 = cutgeometry[0];
var geo2 = cutgeometry[1];
features[0].geometry = geo1;
var addjson = features[0].toJson();
addjson.attributes.GUID=guidLayer();
addjson.geometry = geo2;
landusePointLayer.applyEdits([new esri.Graphic(addjson)], [features[0]], null, function() {
try {
var Cutoperation = new esri.dijit.editing.Cut({
addedGraphics: [new esri.Graphic(addjson)],//addjson必须是转化过的(toJson)
featureLayer: landusePointLayer,
postUpdatedGraphics: [features[0]],
preUpdatedGraphics: [new esri.Graphic(oldjson)]//oldjson必须是转化过的(toJson)
});
} catch(e) {
alert(e.message);
}
undoManager.add(Cutoperation);
6.回退功能:造成图层乱飞,暂时去掉改功能。