終於開始了 噩夢一般的ArcGIS 我特別不習慣這種結構化的程序寫法 寫起來特別吃力 特別是把幾個功能整合到同一個頁面去的時候。
寫程序的時候,一般我喜歡先寫個Demo然后再把Demo上面的功能加到頁面里面去 結果 加進去之后老是有問題 早了半天 問題還沒找到 新的問題又出現了 好了不吐槽了 慢慢來
有關於ArcGIS的介紹 我就不再贅述了 網上有很多。
如何初始化地圖
前端:

1 html,body {
2 padding-top: 25px;
3 margin: 0;
4 height: 100%;
5 }
6
7 #map {
8 height: 100%;
9 width: 100%;
10 margin: 0;
11 padding: 0;
12 position: relative;
13 }
這很重要 如果不定義html和body的高度 你的地圖只有400的行號 或者你定義了map的高度 只能是map的高度不能自適應屏幕
腳本:

1 var map, pieChart, buffGeom; 2 require(["esri/map", 3 "esri/basemaps", 4 "dojo/domReady!"], 5 function (Map, esriBasemaps, dom) { 6 esriBasemaps.tdtvec = { 7 baseMapLayers: [{ url: "http://..." }, 8 { url: "http://..." }], 9 thumbnailUrl: "../Content/image/vectormap.png", 10 title: "基礎地形" 11 }; 12 13 esriBasemaps.tdtimg = { 14 baseMapLayers: [{ url: "http://..." }, 15 { url: "http://..." }], 16 thumbnailUrl: "../Content/image/imagemap.png", 17 title: "影像地圖" 18 }; 19 20 map = new Map("map", { 21 basemap: "tdtvec", 22 center: [120.756, 30.766], 23 zoom: 13 24 }); 25 });
這里我自定義了需要疊加的底圖(天地圖)
如何添加一些小工具
前端:
就是將那些工具定位在地圖上 這里就不寫出來了 注意的一點是 map的樣式上面 需要加上position: relative; 這樣 這些工具會隨着地圖變動 位置跟着移動
腳本:

1 var map, msr; 2 require(["esri/map", 3 "esri/basemaps", 4 "esri/units", 5 6 "esri/dijit/BasemapToggle", 7 "esri/dijit/HomeButton", 8 "esri/dijit/Scalebar", 9 "esri/dijit/Measurement", 10 11 "dojo/dom", 12 "dojo/domReady!"], 13 function (Map, esriBasemaps, Units,BasemapToggle, HomeButton, Scalebar, Measurement, dom) { 14 esriBasemaps.tdtvec = { 15 baseMapLayers: [{ url: "http://..." }, 16 { url: "http://..." }], 17 thumbnailUrl: "../Content/image/vectormap.png", 18 title: "基礎地形" 19 }; 20 21 esriBasemaps.tdtimg = { 22 baseMapLayers: [{ url: "http://..." }, 23 { url: "http://..." }], 24 thumbnailUrl: "../Content/image/imagemap.png", 25 title: "影像地圖" 26 }; 27 28 map = new Map("map", { 29 basemap: "tdtvec", 30 center: [120.756, 30.766], 31 logo: false, 32 zoom: 13 33 }); 34 35 //底圖切換 36 var toggle = new BasemapToggle({ 37 map: window.map, 38 basemap: "tdtimg" 39 }, "BasemapToggle"); 40 toggle.startup(); 41 42 //比例尺 43 var scalebar = new Scalebar({ 44 map: window.map, 45 scalebarUnit: "metric" 46 }); 47 48 //HOME按鈕 49 var home = new HomeButton({ 50 map: window.map 51 }, "HomeButton"); 52 home.startup(); 53 54 //測量工具 55 if (!msr) { 56 msr = new Measurement({ 57 map: window.map, 58 defaultAreaUnit: Units.SQUARE_KILOMETERS, 59 defaultLengthUnit: Units.KILOMETERS 60 }, dom.byId("measurementDiv")); 61 msr.startup(); 62 63 msr.on("measure-end", function (evt) { 64 this.setTool(evt.toolName, false); 65 }); 66 } 67 });
下面是實際樣式:
轉載請注明地址:http://www.cnblogs.com/CoffeeEddy/p/5643949.html