Hi
Just downloaded today's MVC build and I style issue with the map rendering...
Hi
Just downloaded today's MVC build and I style issue with the map rendering...
another sample of this issue....
Hi Jean-Marie,
I just checked the 6.0.249.0 version with the MVCEdition acessing the WorldMapKitWmsWebOverlay but did not encounter any missing tiles. Can you verify you are on the 6.0.249.0 version from today?
NO! it is 6.0.248.0 on my customer portal. Could you make the 249 available ASAP I have a presentation starting in about 45mn!
thanks!
When zooming - out on some level of zoom we have this issue.
This is not an issue that was fixed between the 6.0.248.0 and the 6.0.249.0 versions. This is something that was fixed in previous versions; I was trying to verify if you had an updated version referenced in your application or if perhaps a old build accidently got re-referenced.
The fix that was implemented was for WMS Layers that had missing tiles. What layer types are you seeing this issue on?
WMS Layer tiles
Do you perhaps have a cache that is storing the corrupted tiles?
If so you might try clearing this out and also verify the version of the MVCEdition.dll and MapSuiteCore.dll you are using.
I have been using Mapsuite for long enough and i of course now about cache… I am using the MVC daily build 6.0.253 as today. Does this issue could have anything to do with the WMS server? WMS 6.0.0
thanks!
Hi Jean-Marie,
You indeed have been using Map Suite for quite a while, but we need to first try the simple fixes, would you not agree?
Perhaps your WMS Server has cached corrupt tiles?
yes I do agree! I have cleared the Cache on the WMS server side. However, I still have the issue with my tiles… what should I do.
I am getting broken tiles at many levels… do you thins that I should update the WMS server?
I have applications using the aspx or mvc, I can tell that using the same WMS server with both applications only the MVC is having trouble with the tiles. When exploring the same area with the application using aspx then tiles are correct.
thanks!
Hi Jean-Marie,
I am attempting to recreate the problem when hitting our World Map Kit WMS server but even in remote locations I am not seeing broken tiles with the 6.0.253.0 version of the MapSuiteCore and MVCEdition.dll in my MVC sample application.
Are you updating both the MapSuiteCore.dll and the MVCEdition.dll from the 6.0.253.0 Dll Pack?
Can you do a clean and a rebuild of the application to make sure you are not accidently referencing any old dlls?
Hi Ryan,
I am using the daily development build from the user portal which is at least 6.0.253.0 I still have the issue and with all applications using the WMS server and MVC. I am using most of the time the World Map Kit in spherical Mercator. Is this could be the issue? I shall upload the plugins used on the WMS server side for you to check. Do you think that the IIS server if set to cache static / dynamic and using http compression could create issues with the WMS tiles? I have also noticed that when a web page load for the first time let say on the morning then if there is an overlay for heat map or something else then I get a pink transparent tile and not what the application should display… I have to refresh the browser once and then it works?
any idea?
jm.
thanks.
Hi Jean-Marie,
I checked out the WorldMapKitOverlay using the SphericalMercator projection but did not encounter any issues with missing tiles.
Rather than review all of your WMS plugins perhaps you could conduct some tests where you enable/disable some of your WMS layers. Perhaps then we can narrow down if there is a specific layer with the issue.
Another idea would be to have your application point to our WorldMapKitWmsWebOverlay from our WMS server to see if the issue persists. In this way you can check if the issue is with the WMS server or with the MVC application. You can get the WorldMapKitWMS data in the SphericalMercator projection by setting:
WorldMapKitWmsWebOverlay testSphericalMercator = new WorldMapKitWmsWebOverlay();
testSphericalMercator.Projection = WorldMapKitProjection.SphericalMercator;
map.CustomOverlays.Add(testSphericalMercator);
Note you will get 'ThinkGeo Demo' watermarks on these WMS tiles so you will want to clear out any caches that might store these watermarked tiles after you have completed the testing.
Hi Ryan
could you translate it for razor view implementation?
thanks.
jm.
Ryan,
I have done some testing using both aspx and mvc web clients. Both use the same WMS server an plug-in and both show the same tile defect when looking at the same geographical area…
this is the WMS plug-in:
using System;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Drawing;
using System.IO;
using ThinkGeo.MapSuite;
using ThinkGeo.MapSuite.Core;
using ThinkGeo.MapSuite.WmsServerEdition;
using WMK;
namespace WmsPlugin
{
public class WorldMapKitRL_SPHMCT : WmsLayerPlugin
{
// This method is only called once per style and crs. In it you should create your
// layers and add them to the MapConfiguration. If you want to use tile caching you
// can also specif that in the MapConfiguration under the TileCache property.
// If you have setup multiple styles or projections this method will get called for
// each unique combination
private RectangleShape _bb;
protected override MapConfiguration GetMapConfigurationCore(string style, string crs)
{
WorldMapKitRenderLayer wmk = new WorldMapKitRenderLayer(@"K:\DEPLOYMENT_SPHMCT", 100);
FileBitmapTileCache bitmapTileCache = new FileBitmapTileCache();
bitmapTileCache.CacheDirectory = @"R:\WWMKRL_SPHMCT";
bitmapTileCache.CacheId = "WWMKRLSPHMCT";
bitmapTileCache.ImageFormat = TileImageFormat.Jpeg;
MapConfiguration mapconf = new MapConfiguration();
mapconf.TileCache = bitmapTileCache;
mapconf.TileCache.ImageFormat = TileImageFormat.Jpeg;
mapconf.Layers.Add("WorldLayer", wmk);
//this.BrowerCacheExpiration = new TimeSpan(0, 0, 0, 30, 0);
return mapconf;
}
// This method gets called on every amp request sent to the server. In the parameters we pass the
// map request which includes the bounding box, image size etc. We also pass you the map configuration
// which includes all the static layers. In this method you can make any data changes or do anything
// dynamic you want
protected override Bitmap GetMapCore(GetMapRequest getMapRequest, MapConfiguration mapConfiguration, System.Web.HttpContext context)
{
_bb = getMapRequest.BoundingBox;
// Call the base to render the image based on the style we setup above
return base.GetMapCore(getMapRequest, mapConfiguration, context);
}
// In this method you need to return the name of the Layer that WMS will expose.
// You will use this name on the client to specify the layer you want to consume
protected override string GetNameCore()
{
return "WorldMapKitRL_SPHMCT";
}
protected override GeographyUnit GetGeographyUnitCore(string crs)
{
GeographyUnit geographyUnit;
geographyUnit = GeographyUnit.Meter;
return geographyUnit;
}
// In this method you need to return the projections that are supported by your data.
// It is your responsability to project the data in the MapConfiguration for each projection
// type you specify here.
protected override Collection<string> GetProjectionsCore()
{
Collection<string> projections = new Collection<string>();
projections.Add("EPSG:900913");
projections.Add("EPSG:4326");
projections.Add("EPSG:3857");
return projections;
}
// In this method you need to return the bounding box of the layer.
protected override RectangleShape GetBoundingBoxCore(string crs)
{
//WorldMapKitRenderLayer wmk = new WorldMapKitRenderLayer(@"K:\DEPLOYMENT_SPHMCT", 100);
//return (wmk.GetBoundingBox());
return (_bb);
}
}
}
WMS 6.0.0.0
jm.
my bad!!! this is the good wms plug-in… still having issue with tiles…
using System;
using System.Collections.ObjectModel;
using System.Collections.Specialized;
using System.Drawing;
using System.IO;
using ThinkGeo.MapSuite;
using ThinkGeo.MapSuite.Core;
using ThinkGeo.MapSuite.WmsServerEdition;
using WMK;
namespace WmsPlugin
{
public class WorldMapKitRL_SPHMCT : WmsLayerPlugin
{
// This method is only called once per style and crs. In it you should create your
// layers and add them to the MapConfiguration. If you want to use tile caching you
// can also specif that in the MapConfiguration under the TileCache property.
// If you have setup multiple styles or projections this method will get called for
// each unique combination
protected override MapConfiguration GetMapConfigurationCore(string style, string crs)
{
WorldMapKitRenderLayer wmk = new WorldMapKitRenderLayer(@"K:\DEPLOYMENT_SPHMCT", 100);
FileBitmapTileCache bitmapTileCache = new FileBitmapTileCache();
bitmapTileCache.CacheDirectory = @"R:\WWMKRL_SPHMCT";
bitmapTileCache.CacheId = "WWMKRLSPHMCT";
bitmapTileCache.ImageFormat = TileImageFormat.Jpeg;
MapConfiguration mapconf = new MapConfiguration();
mapconf.TileCache = bitmapTileCache;
mapconf.TileCache.ImageFormat = TileImageFormat.Jpeg;
mapconf.Layers.Add("WorldLayer", wmk);
//this.BrowerCacheExpiration = new TimeSpan(0, 0, 0, 30, 0);
return mapconf;
}
// This method gets called on every amp request sent to the server. In the parameters we pass the
// map request which includes the bounding box, image size etc. We also pass you the map configuration
// which includes all the static layers. In this method you can make any data changes or do anything
// dynamic you want
protected override Bitmap GetMapCore(GetMapRequest getMapRequest, MapConfiguration mapConfiguration, System.Web.HttpContext context)
{
// Call the base to render the image based on the style we setup above
return base.GetMapCore(getMapRequest, mapConfiguration, context);
}
// In this method you need to return the name of the Layer that WMS will expose.
// You will use this name on the client to specify the layer you want to consume
protected override string GetNameCore()
{
return "WorldMapKitRL_SPHMCT";
}
protected override GeographyUnit GetGeographyUnitCore(string crs)
{
GeographyUnit geographyUnit;
geographyUnit = GeographyUnit.Meter;
return geographyUnit;
}
// In this method you need to return the projections that are supported by your data.
// It is your responsability to project the data in the MapConfiguration for each projection
// type you specify here.
protected override Collection<string> GetProjectionsCore()
{
Collection<string> projections = new Collection<string>();
projections.Add("EPSG:900913");
return projections;
}
// In this method you need to return the bounding box of the layer.
protected override RectangleShape GetBoundingBoxCore(string crs)
{
RectangleShape _bb = new RectangleShape(-19268509.29874, 13535292.38285, 20656089.34576, -14435365.7673);
return (_bb);
}
}
}
Hi Jean-Marie,
Would it be possible for you to implement our WorldMapKitWMS server to quickly test if the issue is WMS Server related or application related?
In my post from 01-28-2013 03:45 PM I provide code on how to connect to this.
Hi Ryan,
Yes I would like to try it but I need the razor version of your code. I was able to add the other map providers google, yahoo, bing, openstreet and all works just fine but the 3M wms server which consistently generate issues with the mvc map client. I cannot tell if the issue is linked with the mvc map client not working well with the wms server or if the wms server not serving the right tiles to the mvc client… but I can tell that the mvc client as well as the aspx client have both the same issue and the only correlation is the WMS server used by both of them???.
I have found an kissue with the gecoder data and we need this to be solved ASAP because we are in the process of geocoding more 50m addresses and it is urgent then when could you ship us the 2012 data for the geocoder?
thanks
jm
Hi Jean-Marie,
Please see below for the appropiate code and let me know your result:
.CustomOverlays(overlays =>
{
overlays.WorldMapKitWmsWebOverlay("WorldMapKitOverlay").Projection(WorldMapKitProjection.SphericalMercator).Name("ThinkGeo World Map");
})
.Render();
}
Please refer to my response in the Geocoder forum for information concerning the Geocoder issues you reported.