在这个答案中,我将解释一下我是如何更改街道名称的大小的。
在 MapsForge 的 jar 文件中包含一个 xml 文件,该文件将标准用于渲染地图数据。您也可以通过从服务器查看源代码来下载此文件:http: //mapsforge.googlecode.com或从此处下载 xml 文件本身:http: //mapsforge.googlecode.com/svn/trunk/mapsforge -render-theme/src/main/resources/osmarender/osmarender.xml。所以,你有一个基础来调整你自己的渲染文件。我把它改成这样:
(xml文件的片段):
在 MapsForgeRenderThemeAPI 页面(在上面的网站上)的 Wiki 页面上,您可以找到如何调整自己的渲染文件以及规则元素中的 e、k、v 属性的含义。如您所见,在无隧道方式规则元素中的某处,在方式规则元素下方有一个带有 e="way"、k="area"、v="~|no|false" 的规则元素。此元素下的每个规则元素都有一个 e="way"、k="highway" 和等于 openstreetmap 参数的 v 值。当您登录到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>
line 元素指定街道的显示方式(颜色、宽度、黑色边框,...)。这里还有一个规则元素,其中包含一个 pathText 元素。此元素指定文本在笔划内的显示方式(颜色、宽度、字体大小、...)。所以,这就是我们需要的元素!如您所见,在我的示例中,第三条道路的街道名称的字体大小将以 32 像素的大小显示,放大级别为 14 或更高。
现在我们要使用我们自己的渲染主题 xml 文件:
我在项目的 assets 文件夹中添加了自己的 render-xml 文件。与启动时相比,我将文件复制到一个位置,我可以在需要时将其读出。在您处理 mapsforge 地图的活动中,您只需通过实现如下代码(示例)链接到该文件:
File f = new File(Environment.getExternalStorageDirectory(), myRenderTheme.xml);
mapView.setRenderTheme(f);
请注意,setRenderTheme(File) 将抛出 FileNotFoundException。
因此,这一切都是为了使用 mapsforge 更改街道名称。您可以根据需要渲染整个地图!
感谢 MapsForge 开发社区。
玩得开心!
氪