標籤:
最近被一個bug困擾了兩天~
我新發布了一個NAserver(路徑分析服務),但是放在之前的代碼裡面發現不能產生路徑。經過我的調試發現並沒有代碼並沒有報錯,並且能夠返回所產生路徑的Graphic layer,但路徑就是不能在地圖上顯示出來!
期間我的解決辦法是思考可能造成這個現象的各種原因(寫在紙上),然後逐一調試、排除,到最後把我所能夠想到的所有可能的原因都排除了。。。
無可奈何,我開始通過各種Arcgis for Javascript相關的QQ群、甚至是Google到國外的一些論壇去翻閱有沒有相似的問題。最終得到了一個很有可能的原因:雖然程式沒儲存,也返回了相關的資料,那返回的資料是不是正確的資料呢?帶著這個問題我開始尋找如何能夠把返回的Graphic layer資料在地圖上畫出來,後來我通過官方的API發現Graphic(Json)這個建構函式,然後就取了放回資料中Paths中的第一個點和最後一個點在地圖上畫線,結果發現返回的兩個點果真不能在地圖上畫線,然後我把BaseMap的url換成NAserver相對應的MapServer的url後發現線可以畫出來。到這裡我就猜測:這兩個點的座標是NAserver上的座標,是不是由於NAserver上的地理座標系和我之前的BaseMap的地理座標系不一樣呢。然後我便開始重新建立NAserver,做出來如下操作便使得兩個地圖的地理座標系一直。
在建立Feature dataset的時候,在這一選項的時候便是選擇NAserver的地理座標系,如果你不知道自己的BaseMap的地理座標系是什麼,你只用點擊那個地球選項中的import選項並選擇自己的公路要素便能使其地理座標系一致。
是console.log()出的graphic,然後根據其找到paths並找到其中點的座標。
以下是相關的console的代碼和根據paths中的點通過Json的方式來畫線。
function showRoute (result) {var routeResults = result.routeResults;map.graphics.add(routeResults[0].route.setSymbol(routeSymbol));routes.push(routeResults[0].route.setSymbol(routeSymbol));console.log(routeResults[0].route.setSymbol(routeSymbol));var polylineJson = { "paths":[[[94.44745433000008,38.53435435800003], [98.10367744400008,37.354744794000055]]], "spatialReference":{"wkid":4326}};var polyline = new Polyline(polylineJson);var gra = new Graphic(polyline, new SimpleLineSymbol(SimpleLineSymbol.STYLE_SOLID, new Color([255, 0, 0, 0.5]), 1));map.graphics.add(gra);var msgs = ["伺服器訊息:"]; for (var i = 0; i < result.messages.length; i++) { msgs.push(result.messages[i].type + " : " + result.messages[i].description); } if (msgs.length > 1) { alert(msgs.join("\n - ")); }}
總結:這是我第一次問瞭解決一個問題而倔了兩天的時間,這個中間的過程真的不容易,因為你一直是建立自己的假象然後又不停的推翻自己的假象,不知道自己什麼時候才能夠解決這個問題又或是自己能不能解決這個問題。。。值得我自己肯定自己的是這這個過程中我始終相信一點:如果我放棄了,我就根本不可能成為一名工程師(我認為我目前只是一名程式員,而我的理想是成為一名工程師~)因此我一直在堅持著一直在倔強著,中間通過各種方法在互連網中尋找一些解決問題的提示最後也的確獲得了關鍵的提示並解決了問題。最後,我覺得發現問題並解決問題的能力是一個優秀程式員必備的能力,我現在就要往成為一名優秀程式員的路上一直走下去~
最後,Stick to write blog!
ArcGIS for JavaScript 關於路徑開發的一些記錄(三)