《ArcGIS Runtime SDK for Android開發筆記》——問題集:如何解決ArcGIS Runtime SDK for Android中文標註沒法顯示的問題(轉載)

Geodatabase中中文標註編碼亂碼一直是一個比較頭疼的問題以前也不知道問題出在哪裏?在百度後發現園子裏的zssai已經對這個問題緣由作了一個詳細說明。這裏將原文引用以下:html

說明:此文轉載自http://www.cnblogs.com/ssai2015/p/4869967.html  數據庫

自 10.2版本開始,我就一直被ArcGIS Runtime SDK for Android的中文標註無限困擾。不管是駐留於內存中的Graphic 的文本符號TextSymbol,仍是新增的離線geodatabase中的中文標註,只要與中文扯上了干係,就沒法顯示。每次接到用戶的電話,我就只能 很是官方的倉促應對,文檔中明確說明了這一限制啊,確實無能爲力;建議您對標註層建立離線緩存吧;您的Android開發經驗這麼豐富,也能夠自行繪製文 原本實現;等等等等。其實,本身也以爲Esri的這種疏漏太對不起廣大的中國用戶了。緩存

      好在對於Graphic的中文TextSymbol的顯示很快就找到了便捷的方法,也算是有了初步的交代。很少廢話,直接奉上簡單的代碼片斷吧。字體

複製代碼
 1 //建立點幾何  2 Point tapPoint = mMapView.toMapPoint(x, y);  3  4 //建立文本符號  5 String showLabel = "哈哈,中文標註圖形點";  6 TextSymbol tapTextSymbol = new TextSymbol(28, showLabel, Color.BLUE);  7 tapTextSymbol.setFontFamily("DroidSansFallback.ttf");  8  9 //傳入點幾何和文本符號以構建Graphic 10 Graphic tapGraphic = new Graphic(tapPoint, tapTextSymbol); 11 12 //將建立的Graphic添加到GraphicsLayer上 13 gLayer.addGraphic(tapGraphic);
複製代碼

      是的,問題的關鍵在於字體的指定,即,調用setFontFamily()準確識別到正確的字體。大多數的Android設備上都會默認安裝DroidSansFallback.ttf這一字體,拿來便可。編碼

      Graphic的問題解決了,接下來呢,就該關注離線geodatabase的標註了,畢竟,這一格式是10.2.X的最大亮點,也是移動端應用所亟需 的。畢竟,野外做業中可以順利聯網的可能性爲零。千呼萬喚終露面,惋惜卻還文縐縐的抱起了琵琶——中文標註呢?中文標註呢?spa

      一個接一個的用戶需求迫着我開始了新一輪的嘗試。對於同一數據,爲何英文和數字均可以正常顯示,而獨獨中文標註沒法顯示呢?首先,利用Firefox提 供的SQLiteManager對要素Table進行查看,數據沒問題;那麼80%~90%就是字體設置的問題了。Android設備默認安裝了 DroidSansFallback.ttf這一可支持中文的字體,那麼參照ArcGIS for Server對字體的解決辦法,安裝此字體並重啓機器,建立mxd並選擇這一字體,然後建立geodatabase。屢次三番的折騰證實:徹底無效啊,甚 至連亂碼都沒有。着實無語。code

      9月份的時候,Esri Developer小組終於驗證得出,對Portal for ArcGIS 託管的要素服務通過若干屬性更新後下載獲得的離線geodatabase是能夠正確顯示中文的。這一消息終於再次激發了個人鬥志,那就找二者的差異唄。經 過半天的不懈努力,真相揭露。htm

      首先,利用SQLiteManager打開所建立的離線geodatabase。blog

      其次,最關鍵的步驟就是找到列表中GDB_ServiceItems打開並雙擊查看內存

      很明顯地,不論是ItemInfo仍是DrawingInfo中的FontFamily都正確設置爲Droid Sans Fallback。可是,這種狀況下,中文標註仍然是沒法顯示的。您須要作的則是編輯ItemInfo字段,將其中的family修改成DroidSansFallback.ttf,以下:

      再次加載這一修改後的geodatabase,中文標註終於出現了。

      family修改前:

      family修改後:

      是的,你沒看錯,就是這麼傻。就至關於你聽到張三的名字,徹底不知道是誰,必須得見到本尊,才清楚,原來是他啊,我認識,我認識,呵呵,呵呵。。。。。

      既然ArcMap建立的離線geodatabase能夠正確顯示中文標註了。那麼類比的,對於由在線服務獲取的離線geodatabase,只須要代碼實 現1)鏈接這一SQLite數據庫,2)找到GDB_ServiceItem表的ItemInfo字段,3)修改這一屬性值。具體實現就勞駕你們了。這一 小章節就到此吧。

 

        小報,小報

         根據Esri非官方渠道,明年3月份推出的Quarz版本將從根本上解決這一問題。小編不再用爲應用中的中文標註擔憂了。

說明:此文轉載自http://www.cnblogs.com/ssai2015/p/4869967.html 

相關文章
相關標籤/搜索