SuperMap.IS.AjaxScript缓冲区分析及专题图制作
在緩沖區(qū)分析上,SuperMap.IS.AjaxScript提供的主要功能函數(shù)有spatialAnalystManager.BufferQuery(bufferParam,qeruyParam,onComplete,onError),以及最近地物查詢(xún)的函數(shù)QueryManager.FindNearest(point,tolerance,queryparam,onComplete,onError)這兩個(gè)。(后者只會(huì)顯示一條記錄,曾因這個(gè)方法而以為是程序出了問(wèn)題而調(diào)試了半天……^_^)。bufferParam對(duì)象的相關(guān)屬性可以查詢(xún)?cè)擃?lèi)的幫助,包括高亮顯示,是否查詢(xún)所有圖層,查詢(xún)字段等,寫(xiě)的時(shí)候感覺(jué)比寫(xiě)AGS的ADF要舒服很多。先貼是緩沖區(qū)的代碼。^_^
Code
??1///<summary>緩沖區(qū)半徑、最近物查詢(xún)</summary>
??2
??3HJMapUtils.AnalysisUtils?=?Class(object,?{
??4
??5?Create:?function(mapControl,?divResult)?{
??6
??7????///<summary>構(gòu)造函數(shù)</summary>
??8
??9????///<param?name="mapControl">操作的mapcontrol對(duì)象</param>
?10
?11????///<param?name="divResult">查詢(xún)結(jié)果顯示的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>根據(jù)坐標(biāo)值來(lái)進(jìn)行緩沖區(qū)分析</summary>
?22
?23????///<param?name="x">坐標(biāo)x值</param>
?24
?25????///<param?name="y">坐標(biāo)x值</param>
?26
?27????///<param?name="distance">緩沖區(qū)查詢(xún)范圍</param>
?28
?29???///<param?name="hasGeometry">是否查詢(xún)空間數(shù)據(jù)</param>
?30
?31????///<param?name="returnFields">返回字段(多字段用','隔開(kāi))</param>
?32
?33????///<param?name="whereClause">圖層限制條件(多字段用','隔開(kāi))</param>
?34
?35????///<param?name="queryLayers">查詢(xún)圖層(多字段用','隔開(kāi))</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();//設(shè)置緩沖區(qū)查詢(xún)參數(shù)
?50
?51????????bufferParam.distance?=?parseFloat(distance);
?52
?53????????bufferParam.fromCustomGeo?=?true;
?54
?55????????bufferParam.geometries?=?new?Array();
?56
?57????????bufferParam.queryMode?=?9;//緩沖區(qū)查詢(xún)模式(很多的,具體參照幫助)
?58
?59????????var?geo?=?new?SuperMap.IS.Geometry();//這里是指定單點(diǎn)查詢(xún),自定義類(lèi)別
?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();//查詢(xún)參數(shù)(高亮等)
?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(';');//查詢(xún)字段
?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);//調(diào)用bufferquery方法進(jìn)行查詢(xún),在onQueryComplete這個(gè)函數(shù)中進(jìn)行對(duì)結(jié)果數(shù)據(jù)集的處理。
126
127????}
128
129?
130
131}
132
133
?
專(zhuān)題制作上SuperMap.IS.Ajax提供了不同專(zhuān)題的解決方案,很多類(lèi)別,可以參照那些以theme結(jié)尾的一些類(lèi)。不過(guò)在寫(xiě)的過(guò)程中發(fā)現(xiàn)一些問(wèn)題,顏色不知道咋處理,貌似都是ole顏色….有知道的能否指教下.下面是分段專(zhuān)題相關(guān)編寫(xiě)。貼代碼,^_^。
?
Code??1
??2
??3///<summary>分段專(zhuān)題</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>分段專(zhuān)題圖</summary>
?18
?19????????///<param?name="layerName">專(zhuān)題圖所在圖層</param>
?20
?21????????///<param?name="expressionName">所在字段</param>
?22
?23????????///<param?name="rangeList">范圍及顏色,格式為(范圍(多個(gè)用','隔開(kāi));顏色(對(duì)應(yīng)范圍多一個(gè)顏色,同樣多個(gè)用','隔開(kāi)))</param>
?24
?25????????///<param?name="caption">專(zhuān)題標(biāo)題</param>
?26
?27????????if?(!this.MapControl1.layers?||?!this.MapControl1.layers.length)?{?alert("不存在圖層!");?return;?}
?28
?29????????var?rangeLayer?=?new?SuperMap.IS.Layer();//專(zhuān)題圖層
?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("沒(méi)有對(duì)應(yīng)圖層!");?return;?};
?48
?49????????this.ClearTheme(rangeLayer);
?50
?51????????var?theme?=?new?SuperMap.IS.RangeTheme();//分段專(zhuān)題類(lèi)相關(guān)設(shè)置
?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(',');//分段點(diǎn)斷點(diǎn)的設(shè)置
?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(',');//各分段的顏色設(shè)置(貌似只支持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/>";//返回一個(gè)html塊標(biāo)示(不過(guò)顏色很郁悶)
104
105????????}
106
107????????rangeLayer.themeRange?=?theme;
108
109????????this.MapControl1.Update();
110
111????????return?strHtml;
112
113????}
114
115}
轉(zhuǎn)載于:https://www.cnblogs.com/hjcook/archive/2008/12/08/1350678.html
總結(jié)
以上是生活随笔為你收集整理的SuperMap.IS.AjaxScript缓冲区分析及专题图制作的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 笔记本输入法, u、i 等字母变成了数字
- 下一篇: SilverLight学习笔记--WCF