-
-
Notifications
You must be signed in to change notification settings - Fork 348
Open
Labels
Description
Mapsui Version
5.0.2
Device
Android version 16
Describe the bug
WMS maps are not displayed.
This is the code I've used. What's wrong? Thank you.
WmsProvider? lProvider = null;
XmlDocument xml;
try
{
using HttpClient http = new HttpClient();
// Set provider properties
if (!string.IsNullOrEmpty(mReferer))
http.DefaultRequestHeaders.Referrer = new Uri(mReferer);
http.DefaultRequestHeaders.UserAgent.ParseAdd(AppGeneral.cHttpValueUserAgent);
// Load xml document
string wmsXmlString = await http.GetStringAsync(lUrlWMS);
xml = new XmlDocument();
xml.LoadXml(wmsXmlString);
// Create provider
lProvider = new WmsProvider(xml, async (uri) =>
{
using HttpRequestMessage? req = new HttpRequestMessage(HttpMethod.Get, uri);
if (!string.IsNullOrEmpty(mReferer))
req.Headers.Referrer = new Uri(mReferer);
using var resp = await http.SendAsync(req);
resp.EnsureSuccessStatusCode();
return await resp.Content.ReadAsByteArrayAsync();
});
}
catch (Exception ex)
{
throw new Exception(ex.Message + AppGeneral.cCarriageReturn + ( ex.InnerException == null ? "" : ex.InnerException.Message));
}
// Set provider properties
lProvider.ContinueOnError = true;
lProvider.TimeOut = cTimeOut;
lProvider.UserAgent = AppGeneral.cHttpValueUserAgent;
// Set CRS
string lCrs;
if (lProvider.IsCrsSupported("EPSG:3857") == true) lCrs = "EPSG:3857";
else if (lProvider.IsCrsSupported("EPSG:4326") == true) lCrs = "EPSG:4326";
else if (lProvider.IsCrsSupported("EPSG:6706") == true) lCrs = "EPSG:6706";
else throw new Exception(AppTexts.EPSGNotSupported);
lProvider.CRS = lCrs;
// Set layers
string[] lLayers = layer.Split(Convert.ToChar(","));
foreach (string lLayer in lLayers)
{
lProvider.AddLayer(lLayer);
}
// Set mime type
string lMimeType;
if (lProvider.OutputFormats.Contains("image/png")) lMimeType = "image/png";
else if (lProvider.OutputFormats.Contains("image/jpeg")) lMimeType = "image/jpeg";
else if (lProvider.OutputFormats.Contains("image/gif")) lMimeType = "image/gif";
else lMimeType = lProvider.OutputFormats[0];
lProvider.SetImageFormat(lMimeType);
// Return layer
ImageLayer imageLayer = new ImageLayer(AppGeneral.cLayerWebMap)
{
DataSource = lProvider,
Style = new RasterStyle(),
};
return imageLayer;
Reactions are currently unavailable