1
13693261870
2022-09-16 762f2fb45db004618ba099aa3c0bd89dba1eb843
1
define(['dojo/_base/declare','esri/dijit/Bookmarks'],function(declare,Bookmarks){var clazz,myBookmarks,currentTargetId="",datalist=[];clazz=declare("Bookmark",null,{containerId:"bookmarksContainer",toolId:"bookmarksTool",closeId:"bookmarksClose",constructor:function(){dojo.connect(dojo.byId(this.closeId),"onclick",function(evt){var c=new clazz();c.hide()});},show:function(){var containerObj=dojo.byId(this.containerId);if(dojo.style(containerObj,"display")=="none"){dojo.style(containerObj,"display","block")}else{dojo.style(containerObj,"display","none");this.hide()}if(myBookmarks==undefined){var a=[];myBookmarks=new Bookmarks({map:map,bookmarks:a,editable:!0,id:"myBookmarksTool"},this.toolId);}if(datalist.length==0){datalist=this.getData();if(datalist.length>0){for(var i=0;i<datalist.length;i++){var bm={"extent":datalist[i].extent,"name":datalist[i].name};myBookmarks.addBookmark(bm)}dojo.query('.esriBookmarkLabel').forEach(function(node){node.onclick=function(e){var c=new clazz();c.clear();currentTargetId=e.currentTarget.parentNode.parentNode.id;c.addLayers()}});dojo.query('.esriBookmarkRemoveImage').forEach(function(node){node.onclick=function(e){currentTargetId=e.currentTarget.parentNode.parentNode.id;var c=new clazz();c.delLayer()}})}dojo.connect(myBookmarks,"onEdit",function(evt){var bookmarkLabel=$(".esriBookmarkLabel")[$(".esriBookmarkLabel").length-1].innerHTML;var arrLayers=[];var layersIds=map.layerIds;if(layersIds){for(var i=0;i<layersIds.length;i++){var layerId=layersIds[i];if(layerId.indexOf("basemap")>-1){continue}var layerObj=map.getLayer(layerId);var layerUrl=layerObj.url;var visibleLayers=layerObj.visibleLayers;if(visibleLayers.length>0){layerUrl=layerUrl+"/"+visibleLayers[0]}var layerInfo={layerId:layerId,layerUrl:layerUrl,layerType:"dynamic"};arrLayers.push(layerInfo)}}var bookmarkItem={"id":datalist.length+1,"name":bookmarkLabel,"extent":map.extent,"layers":arrLayers};datalist.push(bookmarkItem);var c=new clazz();c.saveData()})}},hide:function(){dojo.style(dojo.byId(this.containerId),"display","none");this.clear()},clear:function(){if(currentTargetId!=""){var index=parseInt(currentTargetId.replace("dojoUnique",""))-1;var layers=datalist[index].layers;for(var i=0;i<layers.length;i++){var layerObject={layerId:layers[i].layerId,layerUrl:layers[i].layerUrl,layerType:layers[i].layerType};checked(layerObject,false)}}},addLayers:function(){var index=parseInt(currentTargetId.replace("dojoUnique",""))-1;var layers=datalist[index].layers;for(var i=0;i<layers.length;i++){var layerObject={layerId:layers[i].layerId,layerUrl:layers[i].layerUrl,layerType:layers[i].layerType};checked(layerObject,true)}},delLayer:function(){var index=parseInt(currentTargetId.replace("dojoUnique",""))-1;var layers=datalist[index].layers;for(var i=0;i<layers.length;i++){var layerObject={layerId:layers[i].layerId,layerUrl:layers[i].layerUrl,layerType:layers[i].layerType};checked(layerObject,false)}datalist.splice(index,1);this.saveData()},getData:function(){var data;$.ajax({url:'data/bookmarks.json?'+Math.random(),type:'GET',async:false,success:function(result){if(result!=""){data=eval('('+result+')').datalist}else{data=[]}},error:function(e){}});return data},saveData:function(){var json="{ \"datalist\": "+JSON.stringify(datalist)+" }";var datas=eval("[{\"Name\":\""+encodeURIComponent(json)+"\"}]")[0];jQuery.ajax({type:"POST",async:true,url:'data/Handler.ashx?'+Math.random()+'&action=SaveData',data:datas,timeout:600000,success:function(result){console.log("地图书签:保存成功!")},error:function(result){alert("保存失败!")}})}});clazz.getInstance=function(){if(instance===null){instance=new clazz()}return instance};return clazz});