如何在Osmand Android中更改主路颜色?

4
我尝试将 primaryRoadColor 的值更改为 ff0000。编译时,它被替换为默认的 ff80a0 值。我应该在哪里创建自定义道路颜色?
在我的渲染文件夹中,我有以下 XML 文件: default.render.xml、Depends-template.render.xml、hud.render.xml、LightRS.render.xml、nautical.render.xml、regions.render.xml、skimap.render.xml、standalone-template.render.xml、test.render.xml、Topo-map-assimilation.render.xml、Touring-view_(more-contrast-and-details).render.xml 以及 UniRS.render.xml。 我按照 这个链接 所述的步骤来操作,但没有成功。
3个回答

6
似乎需要更新这个教程,一个完整的“Hello World!”样式的例子会更好。
这是我在OsmAnd+ 2.3.5中的操作:
我的数据存储文件夹(设置 -> 通用设置 -> 数据存储文件夹)在:
/storage/sdcard1/osmand-plus/osmand

所以自定义渲染器文件必须放在:

/storage/sdcard1/osmand-plus/osmand/rendering

这个目录起初可能是空的,但是当你从“配置地图 -> 地图样式”中选择地图样式后,OsmAnd将把相应的渲染器XML文件放入该目录中。
注意:添加新的渲染器或更改现有渲染器后,您必须完全关闭该应用程序并重新启动它,以使应用程序获取更改。
我采用了“继承”路线,并创建了一个名为BLACK_ROADS.render.xml的文件(遵循<name-of-renderer>.render.xml命名要求),该文件扩展了default (default.render.xml) 渲染器。
这是我的渲染器的内容。我把它做成了一种模板,这样我以后就可以看到这个文件中还可以放什么。
<?xml version="1.0" encoding="utf-8"?>

<!-- depends="default" -> default.render.xml -->
<renderingStyle name="Paints the roads black in day mode, white in night mode" 
    depends="default" defaultColor="#ffffff" version="1">

    <renderingAttribute name="primaryRoadColor">
        <!-- 40 -> 25% opacity, 80 -> 50% opacity, C0 -> 75% opacity, FF -> 100% opacity -->
        <!-- or remove first two hex digits for 100% opacity -->
        <!-- NIGHT MODE -->
        <case nightMode="true" attrColorValue="#80ffffff"/> <!-- white -->
        <!-- DAY MODE -->
        <case attrColorValue="#80000000"/> <!-- black -->
    </renderingAttribute>

    <!-- These are "global" variables (can have many of each), which 
         can be referenced throughout the file. -->
    <!--
    <renderingAttribute/>
    <renderingConstant/>
    <renderingProperty/>
    -->

    <!-- This section determines the order in which objects are rendered.
         Higher values will be on top. -->
    <order/>

    <!-- This section determines how text object are displayed. -->
    <text/>

    <!-- This section determines how point objects, which typically 
         have an icon associated with them, are displayed. -->
    <point/>

    <!-- This section determines how polygon objects are displayed. -->
    <polygon/>

    <!-- This section determines the look of roads, footpaths, coastlines etc.  
         Basically everything that is a line goes into this section. -->
    <line/>

</renderingStyle>

这是结果:
  • OsmAnd风格
  • 新的黑色路线菜单入口(从文件名中获取)
  • 黑色路线白天模式
  • 黑色路线夜间模式

OsmAnd风格 新的黑色路线菜单入口 黑色路线白天模式 黑色路线夜间模式


感谢这个漂亮的例子 - 它运行良好。不幸的是,只能在高缩放级别下使用。您知道如何使其在显示主要道路的所有缩放级别下工作吗? - Bernhard Hiller
1
@BernhardHiller 你需要额外指定primaryRoadLowZoomColor(以同样的方式使用renderingAttribute块)。这会使它按预期工作。我同意它的文档不是很好... - Jonas Czech
我遇到的另一个问题是,在较低的缩放级别下,一些数据没有编译到离线文件中 - 例如,我想将自行车道在较低的缩放级别(例如11)上可见,但由于离线文件的编译方式,这是不可能的。为了做到这一点,我需要同时更改rendering_types.xml,在那里指定较低的minzoom,然后自己从OpenStreetMap数据重新编译离线.obf文件,这需要很长时间和大量RAM。因此存在限制。 - Jonas Czech
@BernhardHiller "_我将致力于制作一个自行车地图_。" 我会关注这个帖子的进展。虽然我通过修改osmand本地rendering.xml文件(仅涉及颜色和大小)成功使专用自行车道更加可见,但是不能在小于某个最小缩放级别时看到它们而不重新编译.obf文件的事实令人恼火。从overpass-turbo导出GPX文件也可以,但很麻烦且不美观。 - Jonas Czech
如果你的项目真正开始了,我甚至可能会租用按小时计费的服务器来渲染我感兴趣的区域,并且显然会在之后将它们上传到某个地方供任何有兴趣的人使用。 - Jonas Czech
显示剩余2条评论

1
我编辑了包含(mapnik)XML的内容,并从默认文件中添加了一些内容,以制作一个新的样式。osmAnd应用程序自带的那些看起来真的很压抑,特别是在路上时。颜色太强烈而且太多了,所以在这个文件中,我让它更像谷歌地图,这样更容易看。不重要的道路是白色的,主要道路是黄色的。
这应该可以回答你的问题,因为我已经注释了我修改的部分,所以如果你寻找"eml",你可以找到它们。具体来说,如果你想改变道路的颜色,可以查找Road-0到Road-4。这些是五条大路。较小的道路也在该部分中。
在进行更改时,请记住,有几种情况下您的更改可能不会反映出来。这是因为其他选项有自己的一套风格。有道路样式,只需选择一个并仅编辑该选项,不要混淆。我选择了德国道路地图册。还有地图模式(日/夜等),我选择了日间。这一切都非常灵活,但对我来说,单一的地图样式就足够了。
您可以在此处下载我的xml文件(eml.render.xml):https://pastebin.com/7MystwDv 1)将其复制到osmAnd的“渲染”文件夹中。
文件位置取决于版本,可能是: /storage/sdcard1/osmand-plus/osmand/rendering 或 /Internal storage/Android/data/net.osmand/files/rendering
2)启动osmAnd,转到“配置地图”,然后单击“地图样式”。在这种情况下,您将拥有一个新的样式“eml”,它派生自您已复制的eml.render.xml文件名。
3)选择该样式后,将道路样式更改为:“德国公路地图集”,因为这是我唯一更改的样式。
4)地图模式:“白天”,这也是我唯一更改的模式。
如果您计划编辑这些文件,则拥有一个显示十六进制颜色的编辑器会非常有帮助。我正在使用Android Studio,当然它有点过头了,但我已经安装了它。应该有其他更小的编辑器提供此选项。

供参考,这是此样式的屏幕截图:输入图像描述


你知道如何增加收费公路的厚度吗? - Suncatcher

0

如果有人只对颜色变化感兴趣,那么我上个月写的这篇OSM日记文章可能会有所帮助。

除此之外,我不知道是否有一些类似于“hello world”的例子可以根据如何文档实现一些应该可能的事情。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接