2013-05-20 1 views
2

MapBox 맵을 사용할 때, 타일은 폴리 라인과 폴리곤 위에 겹쳐져 보이지 않습니다.TileOverlay 문제

이 동작을 수정하는 방법이 있습니까?

public class MapBoxOnlineTileProvider extends UrlTileProvider { 

    private static final String[] FORMATS; 

    static { 
     final String[] servers = new String[] { "a", "b", "c", "d" }; 
     final String[] formats = new String[servers.length]; 
     for (int i = 0; i < servers.length; i++) { 
      formats[i] = String.format(
        "%%s://%s.tiles.mapbox.com/v3/%%s/%%d/%%d/%%d.png", 
        servers[i]); 
     } 
     FORMATS = formats; 
    } 

    // ------------------------------------------------------------------------ 
    // Instance Variables 
    // ------------------------------------------------------------------------ 

    private String mMapIdentifier; 
    private boolean mUseSSL; 

    // ------------------------------------------------------------------------ 
    // Constructors 
    // ------------------------------------------------------------------------ 

    public MapBoxOnlineTileProvider(final String mapIdentifier) { 
     this(mapIdentifier, false); 
    } 

    public MapBoxOnlineTileProvider(final String mapIdentifier, 
      final boolean useSSL) { 
     super(256, 256); 

     this.mMapIdentifier = mapIdentifier; 
     this.mUseSSL = useSSL; 
    } 

    // ------------------------------------------------------------------------ 
    // Public Methods 
    // ------------------------------------------------------------------------ 

    public String getMapIdentifier() { 
     return this.mMapIdentifier; 
    } 

    public void setMapIdentifier(final String anIdentifier) { 
     this.mMapIdentifier = anIdentifier; 
    } 

    public boolean isSSLEnabled() { 
     return this.mUseSSL; 
    } 

    public void setSSLEnabled(final boolean enableSSL) { 
     this.mUseSSL = enableSSL; 
    } 

    @Override 
    public URL getTileUrl(final int x, final int y, final int z) { 
     final String f = FORMATS[new Random().nextInt(FORMATS.length)]; 
     final String p = this.mUseSSL ? "https" : "http"; 
     try { 
      System.out.println(String 
        .format(f, p, this.mMapIdentifier, z, x, y)); 
      return new URL(String.format(f, p, this.mMapIdentifier, z, x, y)); 
     } catch (final MalformedURLException e) { 
      e.printStackTrace(); 
      return null; 
     } 
    } 

} 

오버레이 설정 :

final MapBoxOnlineTileProvider provider = new MapBoxOnlineTileProvider(MAP_ID); 
final TileOverlayOptions overlay = new TileOverlayOptions().tileProvider(provider); 
mMap.addTileOverlay(overlay); 

답변

4

당신은 TileOverlayOptions.zIndex를 찾고 있습니다

내가 사용하고 코드입니다. 이것은 다른 시각적 객체 (마커 제외)에서도 사용할 수 있으며 객체가 생성 된 후 TileOverlay.setZIndex으로 수정할 수 있습니다.

+0

TitleOverlay에서 음수 인 zIndex를 사용하면 효과가 있습니다. –

0

웹 페이지에서와 같이 zIndex를 사용하십시오. 오버레이를 배경으로 생각하면 10의 배수 인 zIndex를 부여하십시오 (예 : 서로 다른 LOD의 경우와 같이 단위 업데이트를 관리 할 수 ​​있음) Geometries (Lines 및 poligons)를 100의 배수로 간주하십시오 따라서 각 지오메트리는 오버레이에서 확실히 그려집니다.)