我已经建立一个Android应用程序使用开放街道地图和OsmDroid离线地图数据。 与MDPI 320x480像素的设备的地图看起来不错,但有一个HDPI屏幕,480x800像素的设备上的街道名称都很小,有点难以阅读。 我的地图数据,直到缩放级别18,最大,我可以下载和Mapnik的瓷砖源使用,加载从SD卡一个zip文件。 我的本地地图是从定义的布鲁塞尔(比利时)的区域。
用320x480像素的MDPI装置的屏幕截图:
用480x800像素的HDPI设备的屏幕截图:
如果你看到设备上的应用程序,这些意见MDPI地图是良好的可读性,在华电国际映射街道名称较小。
有没有一种方法,使街道名称也是华电国际设备上的可读性,因此用户富人的想法,他放大了一步在地图上? 因为它不可能去放大级19,因为没有开放街道地图数据了。 因此,容易和小实施时间/工作少许变通的解决方案我是为我好。 缩放现在被刷在地图上完成的。 如果您还需要的代码,让我知道,我会后它。
提前致谢。
KR
Osmdroid支持不超过静态PNG图像的瓷砖。 你不能改变的平铺图像。 如果你想有更好的映射解决方案试图MapsForge。 这个应用程序/库的工作原理与地图数据和动态地呈现它们。 这样你对渲染地图更多的控制权,并可以自定义其文本和字体和颜色。
在这个答案我如何改变街道名称的大小,我会解释一下。
在MapsForge的jar文件有一个XML的文件包括这种意愿标准用于呈现的地图数据。 您可以通过检查从服务器的源代码也可以下载此文件: http://mapsforge.googlecode.com或从这里下载的XML文件本身: http://mapsforge.googlecode.com/svn/trunk/mapsforge -render主题/ src目录/主/资源/ osmarender / osmarender.xml 。 所以,你有一个基本的调整你自己的渲染文件。 我tweeked它有点像这样:
(在XML文件的片断):
在MapsForgeRenderThemeAPI页面(上面的网站上)的维基页面,您可以找到如何调整自己的渲染文件,什么E,K,V属性的规则元素手段。 正如你可以看到有一个与E =“办法”,K =“区域”,规则元v =“〜|没有|假”无隧道方式规则元素下的方式统治元内的某处。 此元素下的每个规则的元件富人一封=“方式”中,k =“高速公路”和v值等于OpenStreetMap的参数。 当你登录到编辑页面上openstreetmap.org你可以找到那种街道要调整的名称。
现在,我会告诉你如何exactle你想要的字体大小了指定类型的街道。 作为一个例子,我将采取三级道路元素。 每一种方式统治元素包含一些像这样的代码:
<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文件在我的项目的资产文件夹。 比推出的时间,我从那里我可以读出来在需要时将文件复制到一个位置。 在你处理你mapsforge地图的活动,您只需要通过实现这样的(例子)代码链接到本文件:
File f = new File(Environment.getExternalStorageDirectory(), myRenderTheme.xml);
mapView.setRenderTheme(f);
需要注意的是setRenderTheme(文件)将抛出一个FileNotFoundException异常。
所以,这一切都是为了与mapsforge更改街道名称。 你可以使你整个地图,只要你想!
得益于MapsForge开发社区。
玩得开心!
KR