SuperMap.IS.AjaxScript缓冲区分析及专题图制作
生活随笔
收集整理的這篇文章主要介紹了
SuperMap.IS.AjaxScript缓冲区分析及专题图制作
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在緩沖區分析上,SuperMap.IS.AjaxScript提供的主要功能函數有spatialAnalystManager.BufferQuery(bufferParam,qeruyParam,onComplete,onError),以及最近地物查詢的函數QueryManager.FindNearest(point,tolerance,queryparam,onComplete,onError)這兩個。(后者只會顯示一條記錄,曾因這個方法而以為是程序出了問題而調試了半天……^_^)。bufferParam對象的相關屬性可以查詢該類的幫助,包括高亮顯示,是否查詢所有圖層,查詢字段等,寫的時候感覺比寫AGS的ADF要舒服很多。先貼是緩沖區的代碼。^_^
Code
??1///<summary>緩沖區半徑、最近物查詢</summary>
??2
??3HJMapUtils.AnalysisUtils?=?Class(object,?{
??4
??5?Create:?function(mapControl,?divResult)?{
??6
??7????///<summary>構造函數</summary>
??8
??9????///<param?name="mapControl">操作的mapcontrol對象</param>
?10
?11????///<param?name="divResult">查詢結果顯示的div塊</param>
?12
?13????????this.MapControl1?=?mapControl;
?14
?15????????object.divResult?=?divResult;
?16
?17},
?18
?19FindNearestByMapCoord_Buffer:?function(x,?y,?distance,?hasGeometry,?returnFields,?whereClause,?queryLayers,?highLight,?penColor,?brushColor,?backTransparent)?{
?20
?21????///<summary>根據坐標值來進行緩沖區分析</summary>
?22
?23????///<param?name="x">坐標x值</param>
?24
?25????///<param?name="y">坐標x值</param>
?26
?27????///<param?name="distance">緩沖區查詢范圍</param>
?28
?29???///<param?name="hasGeometry">是否查詢空間數據</param>
?30
?31????///<param?name="returnFields">返回字段(多字段用','隔開)</param>
?32
?33????///<param?name="whereClause">圖層限制條件(多字段用','隔開)</param>
?34
?35????///<param?name="queryLayers">查詢圖層(多字段用','隔開)</param>
?36
?37????///<param?name="highLight">是否高亮顯示</param>
?38
?39????///<param?name="penColor">線顏色</param>
?40
?41????///<param?name="brushColor">填充顏色</param>
?42
?43????///<param?name="backTransparent">背景色是否透明</param>
?44
?45?
?46
?47????????var?spatialAnalystManager?=?this.MapControl1.GetSpatialAnalystManager();
?48
?49????????var?bufferParam?=?new?SuperMap.IS.BufferParam();//設置緩沖區查詢參數
?50
?51????????bufferParam.distance?=?parseFloat(distance);
?52
?53????????bufferParam.fromCustomGeo?=?true;
?54
?55????????bufferParam.geometries?=?new?Array();
?56
?57????????bufferParam.queryMode?=?9;//緩沖區查詢模式(很多的,具體參照幫助)
?58
?59????????var?geo?=?new?SuperMap.IS.Geometry();//這里是指定單點查詢,自定義類別
?60
?61????????geo.feature?=?1;
?62
?63????????geo.points?=?new?Array();
?64
?65????????var?point?=?new?SuperMap.IS.MapCoord(parseFloat(x),?parseFloat(y));
?66
?67????????geo.points[0]?=?point;
?68
?69????????bufferParam.geometries[0]?=?geo;
?70
?71?
?72
?73????????var?queryParam?=?new?SuperMap.IS.QueryParam();//查詢參數(高亮等)
?74
?75????????queryParam.hasGeometry?=?hasGeometry;
?76
?77????????queryParam.expectCount?=?10000;
?78
?79????????queryParam.highlight?=?new?SuperMap.IS.Highlight();
?80
?81????????queryParam.highlight.highlightResult?=?highLight;
?82
?83????????queryParam.highlight.queryAreaStyle?=?new?SuperMap.IS.Style();
?84
?85????????queryParam.highlight.queryAreaStyle.penColor?=?parseInt(penColor);
?86
?87????????queryParam.highlight.queryAreaStyle.brushBackTransparent?=?backTransparent;
?88
?89?
?90
?91????????var?returnFields?=?returnFields.split(';');//查詢字段
?92
?93????????var?wc?=?null;
?94
?95????????if?(whereClause?!=?null?&&?whereClause)?{
?96
?97????????????wc?=?whereClause.split(",");
?98
?99????????}
100
101????????var?queryLayers?=?queryLayers.split(',');
102
103????????queryParam.queryLayers?=?new?Array();
104
105????????for?(var?i?=?0;?i?<?queryLayers.length;?i++)?{
106
107????????????queryParam.queryLayers[i]?=?new?SuperMap.IS.QueryLayer();
108
109????????????queryParam.queryLayers[i].layerName?=?queryLayers[i];
110
111????????????var?returnFields2?=?returnFields[i];
112
113????????????queryParam.queryLayers[i].returnFields?=?returnFields2.split(",");
114
115????????????if?(wc?&&?wc?!=?null)?{
116
117????????????????queryParam.queryLayers[i].whereClause?=?wc[i];
118
119????????????}
120
121????????}
122
123????????this.MapControl1.ClearHighlight();
124
125????????spatialAnalystManager.BufferQuery(bufferParam,?queryParam,?this.onQueryComplete,?this.onError);//調用bufferquery方法進行查詢,在onQueryComplete這個函數中進行對結果數據集的處理。
126
127????}
128
129?
130
131}
132
133
?
專題制作上SuperMap.IS.Ajax提供了不同專題的解決方案,很多類別,可以參照那些以theme結尾的一些類。不過在寫的過程中發現一些問題,顏色不知道咋處理,貌似都是ole顏色….有知道的能否指教下.下面是分段專題相關編寫。貼代碼,^_^。
?
Code??1
??2
??3///<summary>分段專題</summary>
??4
??5HJMapUtils.ThemeUtils?=?Class(object,?{
??6
??7????Create:?function(mapControl,?divResult)?{
??8
??9????????this.MapControl1?=?mapControl;
?10
?11????????object.divResult?=?divResult;
?12
?13????},
?14
?15????ThemeRangeMap:?function(layerName,?expressionName,?rangeList,?caption)?{
?16
?17????????///<summary>分段專題圖</summary>
?18
?19????????///<param?name="layerName">專題圖所在圖層</param>
?20
?21????????///<param?name="expressionName">所在字段</param>
?22
?23????????///<param?name="rangeList">范圍及顏色,格式為(范圍(多個用','隔開);顏色(對應范圍多一個顏色,同樣多個用','隔開))</param>
?24
?25????????///<param?name="caption">專題標題</param>
?26
?27????????if?(!this.MapControl1.layers?||?!this.MapControl1.layers.length)?{?alert("不存在圖層!");?return;?}
?28
?29????????var?rangeLayer?=?new?SuperMap.IS.Layer();//專題圖層
?30
?31????????for?(var?j?=?0;?j?<?this.MapControl1.layers.length;?j++)?{
?32
?33????????????var?layertext?=?this.MapControl1.layers[j].name;
?34
?35????????????if?(layerName.toLowerCase()?==?layertext.toLowerCase())?{
?36
?37????????????????rangeLayer?=?this.MapControl1.layers[j];
?38
?39????????????????break;
?40
?41????????????}
?42
?43????????};
?44
?45????????if?(rangeLayer?==?null)
?46
?47????????{?alert("沒有對應圖層!");?return;?};
?48
?49????????this.ClearTheme(rangeLayer);
?50
?51????????var?theme?=?new?SuperMap.IS.RangeTheme();//分段專題類相關設置
?52
?53????????theme.caption?=?caption;
?54
?55????????theme.enabled?=?true;
?56
?57????????theme.expression?=?expressionName;
?58
?59????????theme.breakValues?=?new?Array();
?60
?61????????var?breaks?=?rangeList.split(';')[0].split(',');//分段點斷點的設置
?62
?63????????var?breaksarr?=?new?Array();
?64
?65????????for?(var?k?=?0;?k?<?breaks.length;?k++)?{
?66
?67????????????theme.breakValues[k]?=?parseFloat(breaks[k]);
?68
?69????????????if?(k?==?0)?{
?70
?71????????????????breaksarr.push("0~"?+?breaks[k]);
?72
?73????????????}?else?{
?74
?75????????????????breaksarr.push(breaks[k?-?1]?+?"~"?+?breaks[k]);
?76
?77????????????}
?78
?79????????};
?80
?81????????breaksarr.push(breaks[breaks.length?-?1]?+?"~");
?82
?83????????theme.displays?=?new?Array();
?84
?85????????var?colors?=?rangeList.split(';')[1].split(',');//各分段的顏色設置(貌似只支持ole顏色)
?86
?87????????var?colorsarr?=?new?Array();
?88
?89????????for?(var?i?=?0;?i?<?colors.length;?i++)?{
?90
?91????????????theme.displays[i]?=?new?SuperMap.IS.Style();
?92
?93????????????theme.displays[i].brushColor?=?parseInt(colors[i]);
?94
?95????????????colorsarr.push(colors[i]);
?96
?97????????}
?98
?99????????var?strHtml?=?"";
100
101????????for?(var?l?=?0;?l?<?colorsarr.length;?l++)?{
102
103????????????strHtml?+=?"<span?style='display:block;width:20px;height:20px;background-color:"?+?colorsarr[l]?+?"'></span><div>"?+?breaksarr[l]?+?"</div><br/>";//返回一個html塊標示(不過顏色很郁悶)
104
105????????}
106
107????????rangeLayer.themeRange?=?theme;
108
109????????this.MapControl1.Update();
110
111????????return?strHtml;
112
113????}
114
115}
轉載于:https://www.cnblogs.com/hjcook/archive/2008/12/08/1350678.html
總結
以上是生活随笔為你收集整理的SuperMap.IS.AjaxScript缓冲区分析及专题图制作的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 笔记本输入法, u、i 等字母变成了数字
- 下一篇: SilverLight学习笔记--WCF