Skip to content

Commit f671d51

Browse files
authored
Merge pull request NASAWorldWind#61 from robmilton/fixMapboxTilingProblems
Address Mapbox Tiling
2 parents 2caf91c + 477bc0c commit f671d51

File tree

4 files changed

+52
-16
lines changed

4 files changed

+52
-16
lines changed

src/config/worldwind.layers.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,7 @@
4242
<Layer className="gov.nasa.worldwind.layers.WorldMapLayer"/>
4343
<Layer className="gov.nasa.worldwind.layers.ScalebarLayer"/>
4444
<Layer className="gov.nasa.worldwind.layers.CompassLayer"/>
45+
<Layer className="gov.nasa.worldwind.layers.Earth.MapboxLayer" actuate="onRequest">
46+
<Property name="AccessToken" value="access token here"/>
47+
</Layer>
4548
</LayerList>
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package gov.nasa.worldwind.layers.Earth;
2+
3+
import gov.nasa.worldwind.layers.mercator.BasicMercatorTiledImageLayer;
4+
import gov.nasa.worldwind.layers.mercator.MercatorTileUrlBuilder;
5+
import java.net.MalformedURLException;
6+
import java.net.URL;
7+
8+
public class MapboxLayer extends BasicMercatorTiledImageLayer {
9+
10+
public MapboxLayer()
11+
{
12+
super("mb", "Earth/Mapbox", 19, 256, false, ".png", new URLBuilder());
13+
MapboxLayer.this.setDetailHint(0.3);
14+
}
15+
16+
private static class URLBuilder extends MercatorTileUrlBuilder
17+
{
18+
private String accessToken;
19+
20+
@Override
21+
protected URL getMercatorURL(int x, int y, int z) throws MalformedURLException
22+
{
23+
String urlPostfix = (this.accessToken != null) ? "?access_token=" + this.accessToken : "";
24+
return new URL("https://api.mapbox.com/styles/v1/mapbox/streets-v11/tiles/256/" + z + "/" + x + "/" + y + urlPostfix);
25+
}
26+
}
27+
28+
public void setAccessToken(String apiKey)
29+
{
30+
URLBuilder urlBuilder = (URLBuilder)getURLBuilder();
31+
urlBuilder.accessToken = apiKey;
32+
}
33+
34+
public String getAccessToken()
35+
{
36+
URLBuilder urlBuilder = (URLBuilder)getURLBuilder();
37+
return urlBuilder.accessToken;
38+
}
39+
40+
@Override
41+
public String toString()
42+
{
43+
return "Mapbox";
44+
}
45+
}

src/gov/nasa/worldwind/layers/TiledImageLayer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,7 @@ protected double getDetailFactor()
483483
{
484484
return this.detailHintOrigin + this.getDetailHint();
485485
}
486-
486+
487487
protected boolean needToSplit(DrawContext dc, Sector sector, Level level)
488488
{
489489
// Compute the height in meters of a texel from the specified level. Take care to convert from the radians to

src/gov/nasa/worldwind/layers/mercator/BasicMercatorTiledImageLayer.java

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -97,15 +97,7 @@ protected MercatorTileUrlBuilder getURLBuilder()
9797
MercatorTileUrlBuilder urlBuilder = (MercatorTileUrlBuilder)value;
9898
return urlBuilder;
9999
}
100-
101-
@Override
102-
protected boolean needToSplit(DrawContext dc, Sector sector, Level level)
103-
{
104-
double texelSize = level.getTexelSize() * dc.getGlobe().getRadius();
105-
double pixelSize = dc.getView().computePixelSizeAtDistance(sector.distanceTo(dc, dc.getView().getEyePoint()));
106-
return texelSize > pixelSize * this.getDetailFactor();
107-
}
108-
100+
109101
@Override
110102
protected DownloadPostProcessor createDownloadPostProcessor(TextureTile tile)
111103
{
@@ -143,15 +135,11 @@ protected BufferedImage transformPixels()
143135
if (image != null)
144136
{
145137
int type = image.getType();
146-
if (type == BufferedImage.TYPE_CUSTOM)
147-
{
148-
type = BufferedImage.TYPE_INT_RGB;
149-
}
150-
else if (type == BufferedImage.TYPE_BYTE_INDEXED)
138+
if (type != BufferedImage.TYPE_INT_RGB)
151139
{
152140
type = BufferedImage.TYPE_INT_ARGB;
153141
}
154-
142+
155143
BufferedImage trans = new BufferedImage(image.getWidth(), image.getHeight(), type);
156144
double miny = ((MercatorSector) tile.getSector()).getMinLatPercent();
157145
double maxy = ((MercatorSector) tile.getSector()).getMaxLatPercent();

0 commit comments

Comments
 (0)