超图开发要点摘录
這些是做超圖開發時閱讀超圖幫助摘錄的一些要點;和一些操作過程記錄;和一些程序說明;順序沒有整理;
====
平面坐標系
一般用來作為與地理位置無關的數據的坐標參考。
也是默認新建數據的坐標參考。
如 CAD 設計圖、紙質地圖掃描后的圖片、與地理位置無關的示意圖等。
平面坐標系是一個二維坐標系,原點坐標為(0,0)。
數據中每一個點的坐標是由其距水平和垂直的 X 軸和 Y 軸的距離確定。
====
影像金字塔是柵格數據集的簡化的分辨率(Reduced Resolution)圖像的集合,
影像金字塔是按照一定規則生成的一系列分辨率由細到粗的圖像的集合。
建立影像金字塔可以顯著地提高影像縮放顯示渲染的速度和性能,
地圖縮放:單擊,框選;
應用程序界面風格采用 Ribbon 模式,即 Microsoft Office 2016 風格的界面;
====
超圖桌面版緩沖區分析示例
1 打開一個文件型工作空間;
2 smwu型;
3 雙擊地圖名稱打開地圖;
4 在分析菜單中選擇 緩沖區分析;
5 設置緩沖分析參數;
6 生成緩沖區;
7 生成成功;
8 緩沖區效果;
9 在圖層控制中,取消 可顯示;
10 緩沖區效果消失;
====
地圖工作窗口詳述
先打開一副地圖;呈現地圖工作窗口;
1 左上角6個按鈕;
箭頭 是指:可以選擇要素;
手形:可以上下左右拖動地圖;
放大縮小:縮放地圖;
全幅:可以看到地圖全貌;
2 地圖工作窗口下方一排提示;
選擇個數: 指當前選中的要素個數;
比例尺下拉:切換比例尺;
經緯度顯示方式切換:小數點的度數 和 度分秒 之間切換;
地理坐標系:指示當前使用的坐標系;
中心點:指示當前地圖的中心經緯度;
3 要素選擇操作;
a 在地圖上單擊右鍵,或者單擊工具條中的 選擇,使鼠標指針變為箭頭;
b 選中河流(水系線):鼠標移動到一條河流上,單擊,選中河流高亮;工作窗口下方提示,選擇個數:1;圖層管理器中水系線圖層被選中;
c 選中村落:鼠標移動到一個村落,單擊,選中村落高亮;工作窗口下方提示,選擇個數:1;圖層管理器中村落層被選中;
4 查看選中要素屬性;
選中一條河流后,右擊,在彈出菜單中選擇 屬性;
彈出該要素的屬性信息;
====
超圖js版自帶要素編輯例子說明
一 兩個要素編輯示例
超圖的js版本示例,包括2個編輯要素的示例。
第一個示例,位于示例的 控件-要素類控件-要素編輯 下面;
第二個示例,位于示例的 查詢-數據集查詢-地物編輯 下面;
二 第一個示例
第一個示例;
使用捕捉類和控件ModifyFeature進行要素編輯和捕捉,
捕捉對象使用的是SuperMap.Snap類;
SuperMap.Snap([vector],10,10,{actived:true});
矢量要素編輯使用的是SuperMap.Control.ModifyFeature;
modifyFeature=new SuperMap.Control.ModifyFeature(vector);
其加載自定義的數據,是先定義坐標點數組;然后生成SuperMap.Geometry.Point的數組points;
然后生成幾何對象;然后由幾何對象生成矢量要素;然后加入vector圖層;
三 第二個示例
此示例的地圖帶有經緯度的網格線;
此示例使用的地圖服務為
http://localhost:8090/iserver/services/map-jingjin/rest/maps/京津地區土地利用現狀圖
發布的地圖自帶有經緯度網格線;
該示例定義了三個url, 地圖服務-京津地區土地利用現狀圖,數據服務-data-jingjin,數據服務的數據集-Landuse_R;
====
柱圖專題圖程序原理
? ? new一個專題圖層;類型為bar;
? ? 設置圖表的樣式;
? ? 生成features數組,每個feature中包含經緯度;
? ? 將features數組加入專題圖層;
柱圖示例流程
init():瀏覽器不支持Canvas則返回
new 地圖
new 圖層,注冊圖層初始化完成事件函數addLayer
new 一個bar專題圖圖層
指定專題圖制作的屬性字段
配置圖表參數
注冊專題圖鼠標移動和移出事件
注冊地圖mousemove,用于獲取當前鼠標在地圖中的像素位置
addLayer
添加基礎圖層和專題圖圖層
設置地圖中心點
addThemeLayer()
在專題圖數據中循環
? ? 由一條記錄的字段1、2,new 一個SuperMap.Geometry.Point對象geo(這兩個字段存的是經緯度)
? ? 用其他字段為屬性數組賦值
? ? 由geo和屬性數組生成一個SuperMap.Feature.Vector對象fea
? ? 要素數組features加入fea
專題圖層加入features
開發注意:
柱圖例子使用超圖js庫7.x版本會報錯,必須使用8.x版本;
?
這是超圖自帶示例;
當時做的時候要用8.x版本的庫;
項目上大體是這個樣子;
凡是地圖上不同地點有不同數值需要展示;就可以考慮使用GIS統計專題圖;
====
標簽專題圖示例1
1 選中河流層,制作專題圖;
2 標簽專題圖;風格為單值;
3 選中標簽表達式為xxxx(字段),河流名稱;河流名稱出現在地圖上;
4 放大看河流名稱;
5 縮小地圖之后,很多河流名稱被隱藏;
====
標簽專題圖示例2
1 選擇鄉鎮圖層;制作標簽專題圖,風格為單值;
2 專題圖屬性中,選中標簽表達式為 xxxx(字段名);鄉鎮名稱出現在地圖上;
3 調整透明度為30,鄉鎮名稱字體變模糊;
4 切換到專題圖屬性的風格標簽;
5 A按鈕是控制風格的;
6 點擊A按鈕;彈出設置對話框,可調整標簽文本字體樣式;
7 設置字體為紅色;
8 所設置的鄉鎮字體變紅;
9 再設置另外一個鄉鎮字體為紅色;
====
桌面版設置線圖層風格示例
1 圖層管理器中選中一個線狀圖層;在頂部菜單選擇 風格設置;菜單分為點風格,線風格,填充風格,三組;
2 在菜單中點擊 線符號,下拉,選中某種線型,選中圖層的線狀要素的線符號改變;
3 在菜單中點擊 莫版,下拉,選中某種線風格,線狀要素風格改變;
4 在菜單中設置線寬為2,線要素變寬;
====
簡單單值專題圖示例1
1 右擊欲制作專題圖的圖層,此處為鄉鎮層;選擇 制作專題圖;
2 選擇 單值專題圖,風格 默認;
3 確定之后,增加了一個專題圖圖層;
4 專題圖圖層屬性,表達式下拉,選中 xxxx(字段名),即鄉鎮名稱;
5 系統自動為不同要素設置不同顏色,按默認顏色方案;
7 在圖層管理器中展開專題圖圖層,列出各個要素,此處為各個鄉鎮;
? 眼睛符號控制是否可見;眼睛符號后面一個面狀符號,表示要素為面狀要素,并標示出顏色;
8 地圖上可以選中某個要素;右擊;彈出菜單,選擇 屬性;
9 選中的要素是一個村,列出選中要素的詳情;
====
超圖桌面版工作空間布局和調整操作
1 左側一列,上方為工作空間管理器,下方為圖層管理器;
? 此兩者可以鼠標拖動調整相對大小;
2 中部為打開的各種操作窗口,如打開的地圖,起始頁等;
? 可以在各個tab之間切換;
3 右側一列是圖層屬性窗口,如果有專題圖層,會增加一個專題圖屬性的tab;
4 左側一列可以鼠標拖動調整寬度;
5 右側一列可以鼠標拖動調整寬度;
6 專題圖屬性窗口,有三個tab:屬性,風格,高級;
7 圖層屬性窗口,包括顯示控制、重新指定數據集、矢量參數等部分;
8 如果地圖窗口是當前窗口;從頂部菜單中選擇 地圖屬性;會在右側一列增加一個地圖屬性tab;
? 地圖屬性tab包括三個tab:基本,范圍,坐標系統;
====
刪除服務操作
1 進入服務管理頁;
2 用管理員帳號登錄;
3 選擇“服務”菜單下的“服務管理”選項卡;
4 服務按類別列出;找到要刪除的服務;
5 點擊叉號按鈕;詢問是否確定刪除該服務;
6 點擊“是”,刪除服務;
7 如不再操作,可從右上角退出管理員登錄;
====
utfgrid圖層相關開發要點
? ? utf圖層如果需要多個,每次只能顯示一個;
? ? utf圖層需要綁定一個utfgrid控件;
? ? utfgrid瓦片的精度,數值越小,精度越高,相應的瓦片大小越大;
? ? utfgrid圖層只能同時處理一種鼠標事件,不能同時處理移動和單擊;
? ? 從數據庫表轉換為圖層時,new 要素時;兩種寫法效果一樣;根據情況;
? ? var feature=new SuperMap.Feature.Vector();
? ? var feature=new SuperMap.Feature();
utfgrid返回的info, info.data,里面包含些什么,文檔上不是很好找到;
有時候需要系統運行起來后,在前端進入調試,詳細展開查看某個變量包含的屬性內容;
onFeatureXXX這一類型的函數有時候也需要在前端進入調試查看變量;
====
部分常用語句
地圖定義
? ? map = new SuperMap.Map("map",{controls: [
? ? ? ? new SuperMap.Control.ScaleLine(),
? ? ? ? new SuperMap.Control.Zoom(),
? ? ? ? new SuperMap.Control.MousePosition(),
? ? ? ? new SuperMap.Control.Navigation({
? ? ? ? ? ? dragPanOptions: {
? ? ? ? ? ? ? ? enableKinetic: true
? ? ? ? ? ? }
? ? ? ? })],
? ? ? ? projection: "EPSG:3857"
? ? });
地圖控件
new SuperMap.Control.LayerSwitcher(),
? ? ? ? new SuperMap.Control.OverviewMap(),
? ? ? ? new SuperMap.Control.ScaleLine(),
? ? ? ? new SuperMap.Control.Zoom(),
? ? ? ? new SuperMap.Control.Navigation({
? ? ? ? ? ? dragPanOptions: {
? ? ? ? ? ? ? ? enableKinetic: true
? ? ? ? ? ? }})
地圖操作
? ? map.addLayers([layer,animatorVector,labelLayer,pointLayer]);
? ? map.setCenter(new SuperMap.LonLat(1xxxxx7.2xxx3,4xxxxx8.1xxx2), 12);
map.addLayers([layer,vector]);
? ? ? ? ? ? //顯示地圖范圍
? ? ? ? ? ? map.setCenter(new SuperMap.LonLat(0, 0), 0);
圖層定義
layer= new SuperMap.Layer.TiledDynamicRESTLayer("World", url, null,{maxResolution:"auto"});
layer = new SuperMap.Layer.CloudLayer();
vector = new SuperMap.Layer.Vector("vector");
pointLayer = new SuperMap.Layer.Vector("Point");
? ? //初始化動畫矢量圖層
? ? animatorVector = new SuperMap.Layer.AnimatorVector("Metro", {rendererType:"StretchLine"},{
? ? ? ? repeat:false,
? ? ? ? //設置速度為每幀播放0.05的數據
? ? ? ? speed:0.05,
? ? ? ? //開始時間為0
? ? ? ? startTime:0,
? ? ? ? //每秒渲染12幀
? ? ? ? frameRate:12,
? ? ? ? //結束時間設置為10
? ? ? ? endTime:10
? ? });
圖層屬性
animatorVector.events.on({"drawfeaturestart": drawfeaturestart});
? ? animatorVector.animator.events.on({"firstframestart":framestart});
圖層操作
pointLayer.setOpacity(0);
labelLayer.addFeatures([new SuperMap.Feature.Vector(label)]);
labelLayer.removeAllFeatures();
====
總結
- 上一篇: HIEW的初步使用
- 下一篇: 反汇编基础、OllyDbg简介和界面、基