2017-09-02 2 views
0

Je veux charger mon serveur WMS pour montrer les tuiles à partir de là. J'ai utilisé carto/nutiteq et tout est ok mais je le veux open source ou licence libre. alors j'essaye la bibliothèque osmdroid mais je ne peux pas mettre en application mon wms quelqu'un peut-il m'aider?android mapview avec le fournisseur de tuiles personnalisées wms

// Web Mercator n/w corner of the map. 
private static final double[] TILE_ORIGIN = {-20037508.34789244, 20037508.34789244}; 
//array indexes for that data 
private static final int ORIG_X = 0; 
private static final int ORIG_Y = 1; // 
private static String mLayername = ""; 

// Size of square world map in meters, using WebMerc projection. 
private static final double MAP_SIZE = 20037508.34789244 * 2; 

// array indexes for array to hold bounding boxes. 
protected static final int MINX = 0; 
protected static final int MAXX = 1; 
protected static final int MINY = 2; 
protected static final int MAXY = 3; 
private String layer = ""; 

/** 
* Constructor 
* 
* @param aName a human-friendly name for this tile source 
* @param aBaseUrl the base url(s) of the tile server used when constructing the url to download the tiles http://sedac.ciesin.columbia.edu/geoserver/wms 
*/ 
public WMSTileProvider(String aName, String[] aBaseUrl, String layername) { 
    super(aName, 8, 22, 255, "image/png", aBaseUrl); 
    mLayername = layername; 
} 


final String WMS_FORMAT_STRING = 
     "http://dev.shiveh.com/shiveh?service=WMS&request=GetMap&layers=Shiveh%3AShivehGSLD256&styles=&format=image%2Fpng&transparent=false&version=1.1.1&height=256&width=256&srs=EPSG%3A4326&bbox="; 
protected double[] getBoundingBox(int x, int y, int zoom) { 
    double tileSize = MAP_SIZE/Math.pow(2, zoom); 
    double minx = TILE_ORIGIN[ORIG_X] + x * tileSize; 
    double maxx = TILE_ORIGIN[ORIG_X] + (x + 1) * tileSize; 
    double miny = TILE_ORIGIN[ORIG_Y] - (y + 1) * tileSize; 
    double maxy = TILE_ORIGIN[ORIG_Y] - y * tileSize; 

    double[] bbox = new double[4]; 
    bbox[MINX] = minx; 
    bbox[MINY] = miny; 
    bbox[MAXX] = maxx; 
    bbox[MAXY] = maxy; 

    return bbox; 
} 

Répondre

1

Le système de référence de coordonnées dans votre URL EPSG: 4326 qui est lat/lon wgs84. Cependant les équations que vous avez semblent ressembler aux équations pour convertir des coordonnées de carte glissantes en EPSG: 900913.

Votre serveur prend-il en charge ce CRS? Essayez de basculer le paramètre url CRS à EPSG: 900913 ou changez l'équation pour calculer les coordonnées de la mosaïque demandée