从 openstreetmap 中删除设施名称

Remove amenities NAMES from openstreetmap

是否存在从 OSM 映射中删除所有业务的方法?也喜欢商店、酒吧、修复、酒店等

我希望使用信息较少的地图。是否可以从原始 OSM 服务器执行此操作?也许像 URL 中的选项或其他?我在我的项目中使用 Leaflet 库,也许其中有一些选项?

我希望它像在 GMAPS 中一样 API:

new google.maps.Map(map_div,{
  styles:[{
     elementType:'all',
     featureType:'poi',
     stylers:[{
        visibility:'off'
        }]
     }]});

超过 JS 或超过 extra URL,左右,但没有任何业务。

简短的回答:没有。

您在 openstreetmap.org 上看到的地图是由静态 PNG 图像组成的。您不能影响它们的生成方式。

但是,OpenStreetMap 并不是真的要为最终用户提供地图。该项目的主要产品是您可以从 planet.osm.org 下载的原始地图数据,而不是您在浏览器中看到的地图。

您可以做的是下载原始地图数据并渲染您自己的不包含企业的地图。使用整个星球转储有点让人不知所措,但您可以从几个不同的提供商那里下载较小的 OSM 数据(州或在某些情况下是城市级别)。有关详细信息,请参阅 the OSM wiki

获得数据后,您可以使用多种不同的工具对其进行渲染。我写了一篇 blog post a while ago about rendering tiles using Maperitive. There is also Tilemill,可能还有一些我现在没有想到的。

我们可以使用没有标签或图标的地图,你可以在这个网站上找到很多选项: https://wiki.openstreetmap.org/wiki/Tile_servers

wiki 中使用的地图: https://www.trailnotes.org/FetchMap/TileServeSource.html

这个demo也不错: https://wiwosm.toolforge.org/osm-on-ol/kml-on-ol.php?lat=51.52214&lon=-0.06012&zoom=10&lang=de&layers=B00TT

您可以将 url 用作以下脚本:

**JS Script using Leaflet**
//No labels
var tiles = L.tileLayer('https://c.tiles.wmflabs.org/osm-no-labels/{z}/{x}/{y}.png', {
                maxZoom: 18,
                attribution: '&copy; <a href="https://www.openstreetmap.org  /copyright">OpenStreetMap</a> contributors'
        }),
            latlng = new L.LatLng(34.5, 36.55); 
//No Icons
        var roads = L.tileLayer("http://tile.memomaps.de/tilegen/{z}/{x}/{y}.png", {
           maxZoom: 20, 
        });
        var media = L.tileLayer("https://maps.wikimedia.org/osm-intl/{z}/{x}/{y}.png", {
           maxZoom: 20, 
       });
       var map = new L.Map('map', {center: latlng, zoom: 15, layers: [tiles]});

        var basemaps = { 
          'tiles':tiles, 
          'roads':roads,
          'media':media,
        };
        L.control.layers(basemaps).addTo(map);