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

我跟着这个链接,它没有成功。

4

3 回答 3

6

看来这个教程需要更新了,一个完整的“Hello World!” 样式示例会很好。

这就是我在OsmAnd+ 2.3.5中的做法。

我的数据存储文件夹 ( Settings -> General Settings -> Data storage folder) 位于:

/storage/sdcard1/osmand-plus/osmand

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

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

这个目录一开始可能是空的,但是当你从Configure map -> Map styleOsmAnd 中选择地图样式时,会将相应的渲染器 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>

结果如下:

  • 奥斯曼风格
  • 新的 BLACK ROADS 菜单项(取自文件名)
  • BLACK ROADS 风格日间模式
  • BLACK ROADS 风格的夜间模式

奥斯曼风格 新的 BLACK ROADS 菜单条目 BLACK ROADS 风格日间模式 BLACK ROADS 风格的夜间模式

于 2016-05-28T04:29:20.973 回答
1

我编辑了这个包含的(mapnik)XML,并从默认文件中添加了一些东西来制作新的样式。osmAnd 应用程序附带的那些真的让人难以抗拒,尤其是在路上。颜色太浓了,太多了,所以在这个文件中,我把它做成了类似于谷歌地图,这对你来说更容易。非重要道路为白色,主要道路为黄色。

这应该回答您的问题,因为我已经注释了我已更改的部分,因此如果您查找“eml”,您可以找到它们。具体来说,如果要更改道路颜色,请查找 Road-0 到 Road-4。这是五条大路。较小的也在那个部分。

进行更改时,请记住有几种情况可能不会反映您的更改。这是因为附加选项有一组自己的样式。有Road Styles,只需选择一个并仅对其进行编辑,不要混淆。我选择了德国公路地图集。还有地图模式(日/夜/等),我选择了Day。这一切都非常通用,但对我来说,单一的地图样式就足够了。

You can download my xml file here (eml.render.xml) : https://pastebin.com/7MystwDv

1)将它复制到你的osmAnd的“rendering”文件夹中

文件位置,取决于版本,可以是:
/storage/sdcard1/osmand-plus/osmand/rendering

/Internal storage/Android/data/net.osmand/files/rendering

2) 启动 osmAnd 并转到配置地图,然后单击地图样式。在这种情况下,您将拥有从您复制的 eml.render.xml 文件名派生的新样式“eml”。

3)选择后,将道路样式更改为:“德国道路地图集”,因为这是我唯一更改的

4)地图模式:“白天”也是我唯一改变的一种

如果您打算编辑这些文件,那么拥有一个显示十六进制颜色的编辑器会有很大帮助。我正在使用 Android Studio,这当然是一种矫枉过正,但我​​已经安装了它。应该有其他更小的编辑器提供此选项。

作为参考,这里是这种风格的截图:在此处输入图像描述

于 2017-09-17T09:33:53.507 回答
0

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

除此之外,我不知道基于如何记录应该可能的一些事情的“hello world”类型示例。

于 2020-01-04T10:44:03.133 回答