Exceptions for building extrusions - mapbox

I'm creating a Mapbox scene with three.js. I have 3D models of some buildings which are rendered with custom layer and three.js. For the remaining buildings, I want to extrude the buildings basically in the same way as the example in the docs shows (https://docs.mapbox.com/mapbox-gl-js/example/3d-buildings/). Can I specify that the extrusion should not happen for the modeled buildings?
The current situation looks like this:
https://imgur.com/a/WGO3NWM
I read that you can use polygons to specify a certain region for a layer, but I'm not sure if it works the same way with the extruded buildings.
Is this even possible with the current state? Has anybody already faced a similar problem? Thanks!

You should check to see if the Mapbox Streets buildings layer have IDs. If so you can exclude those buildings by ID.

Related

How to render Mapbox vector tiles only within a specific country's boundaries?

I'm working on rendering some vector tiles using Mapbox Gl JS. These tiles are within the US and Canada, but I need only those within US boundaries to be rendered.
My tileset has the following metadata: gsd, name, miles. There is no metadata that indicates the country itself.
Is there a way to render only the tiles within a specific boundary? I tried with queryRenderedFeatures, but I need a solution with the tiles within precise US boundaries.
I cannot add the tileset URL here because it's part of proprietary software.
There's no straightforward way of doing that, for the reasons you describe.
You can try something like generating a shape which is the inverse of the US (ie, the whole world with the US cut out of it) and overlaying it, to block out everything else. But it will cut off labels and look...not great.

Mapbox studio : how to display building at any zoom level

I'm using mapbox studio to customize a map and I haven't found the way to display building-outline layer at any zoom level.
If I'm under of 16 zoom level, this layer disappears... even if I force opacity to 1.
Any idea ?
Thank you in advance
The minimum zoom level for the buildings layer in the current tileset (Mapbox Streets v8) is 13.
This means that if you zoom out further (from 12 to 0) the buildings layer will not be rendered on the map.
See documentation:
https://docs.mapbox.com/vector-tiles/reference/mapbox-streets-v8/#layer-reference
The reason for this restriction is that if you requested your browser to fetch and render every building polygon in a wider area (like an entire city or country), this would be more than a reasonable amount of data to render.
If you have your own buildings polygon data and you create a tileset from that, you could choose to include your data across more zoom levels. However, you might waste a lot of computing resources drawing shapes that are too tiny to understand at those further zoom levels.

Style and display buildings

I want to create a static google maps image which displays buildings (and buildings only). I looked through the Styled Maps page on static maps stylings, but I couldn't find an option for buildings in particular.
Please note that this should also work in less populated areas, so simply turning the landscape one colour and showing the roads in another does not suffice (like done in this image).
Is there a way to create such a map?
The closest feature for buildings would be the landscape.man_made feature which selects structures built by humans. You can also experiment on other features that may suite your needs such as points of interest.
For features that you want to hide from the map, you can set the style to visibility:off for that specific feature.
Here's an example that changes the stroke color for all man made landscapes and hides all roads:
https://maps.googleapis.com/maps/api/staticmap?size=512x512&zoom=17&center=Brooklyn&style=feature:landscape.man_made|element:geometry.stroke|color:0xff0000&style=feature:road|visibility:off&key=YOUR_API_KEY
Note that the sample uses the element geometry.stroke which selects only the stroke of the feature's geometry.
Hope this helps!

Unity large,dynamic tile map

I'm thinking of making city transport simulation game, based on tile map like simcity. Because transportation is the main component, I'm not gonna describe city thoroughly, like drawing all the buildings or others. But I need to divide the city to districts and villages.
I want them to be generated randomly, based on tile map system - Actually this doesn't have to be tile based, but I don't have any better idea to generate randomly divided districts.
The problem is there are literally to many tiles. Of course I won't make all the tiles to GameObjects, but array storing the information of tile just gets like 4000x3000 (for 12,000,000 tiles). Is it okay? I think this will seriously slow down the game.
I searched for many ways to generate tile maps, but those tile maps are for RPGs.. they are just sprites and background.
My tiles should change dynamically(maybe the colors, and I'm making the game with 3d so maybe the tile can have height that may change), with showing the status of that tile(a small region of the city). What will be better way for my needs?
Thank you!
The short answer is that you should generate a mesh to represent your tiles. This will allow you to represent a large number of tiles as a single game object.
It is not as troublesome as it sounds. I actually went through this myself recently, and have written a step-by-step guide on how to do it, and how to solve a host of other issues I ran in to working with tiles:
http://matthewlynch.net/2017/02/19/efficient-artefact-free-2d-tile-mapping-in-unity-5-5/
The only caveat I would mention (this is discussed in the tutorial, but not directly addressed) is that you should still divide your map up in some way.
I would not recommend exceeding 100x100 tiles in a single mesh, and in fact would recommend breaking it up even further. But once you get the basics of tile->mesh rendering up and running, this is not difficult to do.

Leafleftjs - OpenstreetMap : Bring road names on top of Overlay layers

I am new to OpenstreetMap and Leafletjs. I am trying to implement a map displaying journey time information on motorways (also called highways in some part of the world) by using different colors to show road congestion and the problem I'm facing is, once the map tiles are rendered, it comes with all information, like town/city names, road names etc.
On the basis of road information that I receive, I create road colorings in an overlay that sits on top of the tile layer. The problem is, once that happens, the road colorings cover the road names that appear on the tile layer. The problem can be seen in the image displayed below.
Is there a way, I could extract the road names so that I could put it in a layer above the road coloring layer so that road names appear on top of road colorings.
Thanks for any sort of help, Looking forward to some replies.
Thanks
In theory, you could create two sets of tiles: one with the road lines, another with the shields (labels). Render the shields tiles with a transparent background. Then hack Leaflet around to have a second tile layer above the overlay layer.
However... that's a whole bunch of hassle for a fairly simple problem. So: why not render the road numbers alongside the roads, rather than on top of them? That way, your overlay line won't obscure the numbers. Here's an example of a style that does this (disclaimer: my site!).
Assuming you're using Mapnik to render your tiles, you'll want to use TextSymbolizer rather than ShieldSymbolizer. Customising the style is (of course) much easier if you're using TileMill rather than pure Mapnik XML.
As you say, the roadnames (here ref icon symbolizers) are part of the OSM raster map tiles and can't changed easily.
So the easiest solution would be to switch to a mapstyle without labels.
Another idea would be to add more alpha to your cusom GPS track, so it get's more 'hollow' and fits better in the mapstyle. But the default OSM style isn't good for adding informations on top, as this basemap is already to detailed. Maybe it makes sense to use another one:
http://wiki.openstreetmap.org/wiki/Featured_tiles