話說MapXtreme for Java也是MapInfo他們家出的產品,它很多時候就是不認MapInfo下編輯的地圖,編輯好的漂漂亮亮的地圖,放進MapXtreme for Java中,不是表徵圖變了就是圖層的可見域變了,想不通啊。
中文亂碼問題,網上講的也很多,但都是一種原因,從我的實際經驗來看,中文亂碼分為兩種情況:一是普通圖層的tab檔案和標註字型的設定,二是自己繪製的圖層,標註無法正常顯示的問題。
情況1: 網上普遍出現的問題。解決方案分兩步:
Step1:將圖層的tab檔案的字元集改成“WindowsSimpChinese”,如下例所示
!table
!version 300
!charset WindowsSimpChinese
Definition Table
Type NATIVE Charset "WindowsSimpChinese"
Fields 4
mm_id Decimal (4, 0) ;
mm_name Char (30) ;
mm_area Float ;
mm_length Float ;
Step2:在MapInfo中,載入地圖後,右鍵->圖層控制->選擇有中文亂碼的圖層->標註,在彈出的標註選項對話方塊中,找到更改字型的地區即“Style”區,點擊字型,進入字型對話方塊“Text Style”,將字型“Font”改為中文字型,例如宋體、楷書、隸書等。確定儲存即可。
情況2:在MapInfo中,從裝飾圖層開始,自己繪製地圖,建立表結構,再將裝飾圖層儲存下來的情況,如果出現中文亂碼,根據我的實際經驗,可能的解決方案是:在功能表列,Table->Maintenance->Pack Table,在彈出的Pack Table對話方塊中選擇有中文亂碼問題的圖層,選擇Pack Both Types of Data,點擊Ok。完了後,在MapInfo裡就看不見這個圖層了,載入進來就可以了。再到MapXtreme for Java裡去看,中文就可以顯示出來了。
聲明:情況2在MapXtreme for Java中的表現是:只有數字可以正確顯示,其他都是亂碼,用Info工具去看,只能看到其他圖層正確的中文標註。這種方法我還沒有查到理論依據,只是一種可能的解決方案,但不包治百病,大家可以試一試。
還有一種不能正確顯示標註的情況(不是中文亂碼):在MapInfo中設定標註時選擇的欄位是名稱name,在Mapxtreme for Java中看到的標註卻不是name,也不是亂碼,可能是一些數字,在Mapxtreme for Java查看標註的欄位也是name(但顯示的就不是name,這一點我困惑了很久)。再到MapInfo中的Window->New Browser Window中查看該圖層的欄位,如果發現Mapxtreme for Java中顯示的標註正好是表結構中的第一個欄位的內容,例如可能是ID那個欄位。貌似MapXtreme for Java只能擷取表結構中的第一個欄位,包括在Web工程中調用Mapxtreme for Java的函數。這種情況下我的解決方案是改變該圖層的表結構,把名字放到第一個位置,Table->Maintenance->Table Structure。這樣的後果是,需要重新載入圖層、設定顯示方式等等。