ThinkGeo.com    |     Documentation    |     Premium Support

Value cannot be null - Parameter name: ptr

Hi Everyone,



I have run into a strange issue.  On my development machine my code works fine and will draw a Google map onto a PDF without an issue.  However, when I publish the site to our production server I get the following exception:



 Error Message: System.ArgumentNullException: Value cannot be null.

Parameter name: ptr

   at System.Runtime.InteropServices.Marshal.GetDelegateForFunctionPointer(IntPtr ptr, Type t)

   at 3RM=.exw=.gRw=()

   at 3RM=.exw=.lBw=(Bitmap lRw=, Double[] lhw=, String lxw=, String mBw=, Double[] mRw=)

   at 3RM=.exw=.hRw=(Bitmap hhw=, RectangleShape hxw=, String iBw=, String iRw=, RectangleShape ihw=)

   at ThinkGeo.MapSuite.Core.ManagedProj4Projection.ConvertToExternalProjectionCore(GeoImage image, RectangleShape imageExtent)

   at ThinkGeo.MapSuite.Core.GoogleMapsLayer.U1k=(GeoCanvas VFk=)

   at ThinkGeo.MapSuite.Core.GoogleMapsLayer.DrawCore(GeoCanvas canvas, Collection`1 labelsInAllLayers)

   at ThinkGeo.MapSuite.Core.Layer.Draw(GeoCanvas canvas, Collection`1 labelsInAllLayers)



I have inserted code into our application to log if any parameters being passed in are null - but they are not.  Is there something I failed to do on the server?  I have the “Map Suite 7.0” and “MapSuiteFdoExtensionX86” folders in the System32 folder and I have installed the unmanaged dependencies.  Any other thoughts on what would cause this exception only in our production environment?



Here is a sample of the code I’m using:


PdfDocument document = PdfReader.Open(Path.Combine(folderPath, file));
PdfGeoCanvas canvas = new PdfGeoCanvas();
PdfPage page = document.AddPage();
 
LayerOverlay staticOverlay = new LayerOverlay(“StaticMapOverlay”);
GoogleMapsLayer googleLayer = new GoogleMapsLayer();
googleLayer.ClientId = “[OUR_CLIENTID]”;
googleLayer.PrivateKey = “[OUR_PRIVATE_KEY]”;
googleLayer.MapType = GoogleMapsMapType.Hybrid;
googleLayer.TileMode = GoogleMapsTileMode.SingleTile;
staticOverlay.Layers.Add(googleLayer);
map.CustomOverlays.Add(staticOverlay);
 
Collection<SimpleCandidate> labelsInLayers = new Collection<SimpleCandidate>();
 
RectangleShape zoomedExtents = ExtentHelper.ZoomToScale(map.ZoomLevelSet.ZoomLevel20.Scale, extent, GeographyUnit.Meter, (float)map.Width.Value, (float)map.Height.Value);
 
try
{
     canvas.BeginDrawing(page, zoomedExtents, GeographyUnit.Meter);
     googleLayer.Open();
     googleLayer.Draw(canvas, labelsInLayers);
     canvas.EndDrawing();
}
catch (Exception ex)
{
     
}

Thank you for any insight you can provide,



Travis

Hi Travis, 
  
 I am just guessing this is a deployment issue, would you please try to deploy our HowDoI sample to your server and then review the samples to see if they works fine? 
  
 If the samples work fine, then would you please let us know what’s the version you are using so that we can build a sample to recreate the issue. 
  
 Thanks, 
 Troy

Thanks Troy, I have resolved the issue.  Our server is 64 bit when I recopied "Map Suite 7.0" and "MapSuiteFdoExtensionX86" folders to the SysWOW64 folder everything started working again.

Travis, 
  
 Good to hear you figure it out by yourself. Any other questions, don’t be hesitate to let us know. 
  
 Troy