2015-04-29 38 views
1

我正在學習如何使用Dojo構建系統將應用程序構建到單個js文件(或接近)中。我盡我所知地遵循了這些指示,並以一個基本的例子開展工作。我現在試圖添加額外的js資源和小部件。使用Proj4外部JS文件構建Dojo

我的一個小部件需要Proj4js投影庫在座標之間進行轉換。不幸的是,當我嘗試構建應用程序時,這導致了問題。

error(311) Missing dependency. 
module: app/widgets/MapInfo; dependency: proj4/proj4 

我有我的那個包設置爲道場配置如下:

  packages: [ 
       // Using a string as a package is shorthand for `{ name: 'app', location: 'app' }` 
       'app', 
       'dgrid', 
       'dijit', 
       'dojo', 
       'dojox', { 
        name: 'put-selector', 
        location: 'put-selector', 
        main: 'put' 
       }, 
       'xstyle', 
       'esri', 
       { 
        name: 'proj4', 
        location: '//cdnjs.cloudflare.com/ajax/libs/proj4js/2.3.6/' 
       } 
      ], 

這裏是小工具的頂部:

define([ 
'dojo/_base/declare', 
'dijit/_WidgetBase', 
'dijit/_TemplatedMixin', 
'dojo/_base/lang', 
'dojo/html', 
'dojo/dom-style', 
'dojo/number', 
'dojo/topic', 
'proj4/proj4', 
'xstyle/css!./MapInfo/css/MapInfo.css' 
], function (
declare, 
WidgetBase, 
TemplatedMixin, 
lang, 
html, 
style, 
number, 
topic, 
proj4 
) { 

選項1:忽略它 我曾經想過嘗試告訴dojo忽略它,然而,在閱讀了一些帖子之後,這不是一個真正的選擇。

選項2:使用插件? 我的下一個想法是嘗試使用dojo插件,如dojo/text!包括該文件,但是,我還沒有能夠得到這個工作。

方案3: 頁面最後嵌入腳本,作爲最後的手段,我可​​以簡單地使用嵌入通過在widget window.proj4腳本標記和參考proj4劇本,但這個不是很方便攜帶,因此我正在尋找更好的解決方案。

謝謝!

+0

您的建立檔案中是否有錯字?它說'esri',但可能應該說'proj4' ... –

+0

列出軟件包有兩種方法,一種是簡單列出字符串,另一種是列出軟件包名稱和字符串。 'esri'只是另一個dojo包的名稱。 – roemhildtg

+0

哎呀,我誤解你的構建配置,因此混亂,對此感到抱歉。 (我的大腦混合了esri和proj4的條目。) –

回答

0

我最終通過使用proj4庫的本地副本來獲得此工作。然後我用了道場的地圖屬性proj4映射到正確位置:

map: { 
    '*': { 
     'viewer': 'cmv/viewer/js/viewer', 
     'gis': 'cmv/viewer/js/gis', 
     'proj4js': 'app/vendor' 
    } 
}, 

proj4現在可以通過使用路徑'proj4js/proj4'部件一起使用。