在這個答案中我會解釋一點,我是如何改變街道名稱的大小。
在MapsForge的jar文件中有一個xml文件,它將被用於渲染地圖數據。您也可以通過檢查服務器的源代碼來下載此文件:http://mapsforge.googlecode.com或從此處下載xml文件本身:http://mapsforge.googlecode.com/svn/trunk/mapsforge-render-theme/src/main/resources/osmarender/osmarender.xml。所以,你有一個基本的調整你自己的渲染文件。我tweeked像這樣一點:
(對XML文件的片段):
![enter image description here](https://i.stack.imgur.com/COfk0.png)
在MapsForgeRenderThemeAPI頁的維基頁面(上面的網站上),你可以找到如何調整您自己的渲染文件以及規則元素中的e,k,v屬性的含義。正如你所看到的,在規則元素之下的某個地方有一個規則元素,其中規則元素爲e =「way」,k =「area」,v =「〜| no | false」。該元素下的每個規則元素都有一個e =「way」,k =「highway」,v值等於openstreetmap參數。當您登錄openstreetmap.org的編輯頁面時,您可以找到想要調整名稱的街道類型。
現在我要告訴你如何確定特定類型街道的字體大小。作爲一個例子,我將採取三級公路要素。每一種方式統治元素包含像這樣的代碼:
<rule e="way" k="highway" v="tertiary">
<line stroke="#ffff90" stroke-width="1.5" />
<rule e="way" k="*" v="*" zoom-min="14">
<pathText k="name" font-style="bold" font-size="32" stroke="#ffff90" stroke-width="2.0" />
</rule>
</rule>
線元素指定如何在街上會被顯示(顏色,寬度,黑色邊框,...)。 這裏還有一個規則元素,裏面包含一個pathText元素。此元素指定文本在筆畫(顏色,寬度,字體大小等)內的顯示方式。所以,這是我們需要的元素!在我的示例中,如您所見,三級道路的街道名稱的字體大小將以32像素的大小顯示,放大級別爲14或更高。
現在,我們希望用我們自己的渲染主題的XML文件:
我已經添加了我自己的渲染XML文件在我的項目的資產文件夾。比起t啓動時間,我將文件複製到一個可以在需要時從中讀出的位置。在你處理你mapsforge地圖的活動,您只需要通過實現這樣的(例子)代碼鏈接到本文件:
File f = new File(Environment.getExternalStorageDirectory(), myRenderTheme.xml);
mapView.setRenderTheme(f);
注意setRenderTheme(文件)將拋出一個FileNotFoundException異常。
所以,這是所有使用mapsforge更改街道名稱。你可以渲染你的整個地圖,只要你想!
感謝MapsForge開發社區。
玩得開心!
Kr
Thnx爲您的偉大答案! MapsForge確實比OSMDroid更好。花了一些時間讓街道名稱更具可讀性,但現在一切正常。同時,使用MapsForge的地圖數據大小縮小了50倍,因此我不需要地圖數據的擴展文件! Thnx很多人,你太棒了! –
感謝MapsForge的作者! –
@pinyin_samu你是如何使mapforge變得更大的街道名稱? – bk138