IEnumerable <Location> GetLocations(byte[] data, int x, int y, int z)
        {
            var tile = new Mapbox.Map.VectorTile();

            tile.ParseTileData(data);

            var layer = tile.Data.GetLayer("poi_label");

            m_logger.Debug("Parsing locations for tile {0},{1},{2}",
                           x, y, TileZoomLevel);

            return(GetLocations(layer, x, y, z));
        }
Beispiel #2
0
        /// <summary>
        /// Fetches the vector data and passes each layer to relevant layer visualizers
        /// </summary>
        /// <param name="tile"></param>
        /// <param name="e"></param>
        private void CreateMeshes(UnityTile tile, object e)
        {
            tile.HeightDataChanged -= HeightDataChangedHandler;
            tile.ImageDataChanged  -= ImageDataChangedHandler;

            var parameters = new Mapbox.Map.Tile.Parameters
            {
                Fs    = this.FileSource,
                Id    = new Mapbox.Map.CanonicalTileId(tile.Zoom, (int)tile.TileCoordinate.x, (int)tile.TileCoordinate.y),
                MapId = _mapId
            };

            var vectorTile = new Mapbox.Map.VectorTile();

            vectorTile.Initialize(parameters, () =>
            {
                if (vectorTile.Error != null)
                {
                    Debug.Log(vectorTile.Error);
                    return;
                }

                foreach (var layerName in vectorTile.Data.LayerNames())
                {
                    if (_layerBuilder.ContainsKey(layerName))
                    {
                        foreach (var builder in _layerBuilder[layerName])
                        {
                            if (builder.Active)
                            {
                                builder.Create(vectorTile.Data.GetLayer(layerName), tile);
                            }
                        }
                    }
                }
            });
        }