如何解決ArcGIS Runtime SDK for Android中文標注無法顯示的問題


      自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的最大亮點,也是移動端應用所亟需的。畢竟,野外作業中能夠順利聯網的可能性為零。千呼萬喚終露面,可惜卻還文縐縐的抱起了琵琶——中文標注呢?中文標注呢?

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

      9月份的時候,Esri Developer小組終於驗證得出,對Portal for ArcGIS 托管的要素服務經過若干屬性更新后下載得到的離線geodatabase是可以正確顯示中文的。這一消息終於再次激發了我的斗志,那就找兩者的差別唄。經過半天的不懈努力,真相揭露。

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

      其次,最關鍵的步驟就是找到列表中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版本將從根本上解決這一問題。小編再也不用為應用中的中文標注擔心了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM