0

我关注 了 https://medium.com/@mrgrantanderson/https-medium-com-serving-vector-tiles-from-django-38c705f6

将 mvt 切片从 geoDjango 提供给 mapbox。

使用运行查询

   cursor.execute("SELECT ST_AsMVT(tile) FROM (SELECT osm_id, building, ST_AsMVTGeom(geom, TileBBox(%s, %s, %s, 3857)) FROM  nepal_khokanabuildings ) AS tile", [zoom, x, y])

因为我的模型项目是 ESPG:3857

Vectors 似乎没有加载到地图上,api 请求工作正常。我也尝试过从 Geoserver 提供矢量文件,但也没有运气。

这是我的 JS 文件

var map = new mapboxgl.Map({
container: 'map',
style: 'mapbox://styles/mapbox/light-v10',
zoom: 12,

    center: [85.294688,27.634106],

});
    var mapillarySource = {
      type: 'vector',
      tiles: [
       'http://0.0.0.0:8000/nepal/api/v1/data/nepal/{z}/{x}/{y}.mvt'
        ],
      minzoom: 0,
      maxzoom: 14
  };

map.on('load', function() {

  map.addSource('mapillary', mapillarySource);
  map.addLayer({
      'id': 'mapillary',
      'type': 'fill',
      'source': 'mapillary',
      'source-layer': 'water',
      'paint': {
                "fill-color": "#00ffff"

      }
  });
});
map.addControl(new mapboxgl.NavigationControl());
</script>
4

2 回答 2

1

有很多问题可以表现为“我的图层不显示”。

您可以检查以下各项:

  • 图层是在地图准备好之前创建的吗?(等待"load"事件)
  • 是否生成了正确的磁贴请求?
  • 这些请求成功了吗?
  • 他们是否返回实际的 .pbf 文件?
  • 它们是否在正确的位置和正确的投影中包含数据?
  • 它们是否包含具有您期望的名称的图层?(在这种情况下为“水”)
  • 它们是否包含您期望的类型的数据?(在这种情况下为多边形)

我对0.0.0.0这个主机很好奇,但也怀疑层名可能不对。

如果您的磁贴请求成功,您可以尝试使用https://stevage.github.io/vector-inspector/来检查它们,尽管您可能会遇到该页面在 HTTPS 上提供的问题,而您的本地磁贴在 HTTP 上。

于 2020-01-23T17:25:57.177 回答
0

使用关注,

"id": "postgis-tiles-layer",
"source-layer": "default",
于 2020-04-21T18:07:57.453 回答