ThinkGeo.com    |     Documentation    |     Premium Support

GoogleMapsOverlay: No imaging component suitable to complete this operation was found

When I use GoogleMapsOverlay I frequently run into the following exception:



System.NotSupportedException was unhandled
  _HResult=-2146233067
  _message=No imaging component suitable to complete this operation was found.
  HResult=-2146233067
  IsTransient=false
  Message=No imaging component suitable to complete this operation was found.
  Source=PresentationCore
  StackTrace:
       at System.Windows.Media.Imaging.BitmapDecoder.SetupDecoderFromUriOrStream(Uri uri, Stream stream, BitmapCacheOption cacheOption, Guid& clsId, Boolean& isOriginalWritable, Stream& uriStream, UnmanagedMemoryStream& unmanagedMemoryStream, SafeFileHandle& safeFilehandle)
       at System.Windows.Media.Imaging.BitmapDecoder.CreateFromUriOrStream(Uri baseUri, Uri uri, Stream stream, BitmapCreateOptions createOptions, BitmapCacheOption cacheOption, RequestCachePolicy uriCachePolicy, Boolean insertInDecoderCache)
       at System.Windows.Media.Imaging.BitmapImage.FinalizeCreation()
       at System.Windows.Media.Imaging.BitmapImage.EndInit()
       at ThinkGeo.MapSuite.WpfDesktopEdition.TileOverlay.gRU=(BitmapTile ghU=)
       at ThinkGeo.MapSuite.WpfDesktopEdition.TileOverlay.exU=(RectangleShape fBU=)
       at ThinkGeo.MapSuite.WpfDesktopEdition.TileOverlay.qRU=(RectangleShape rBU=, OverlayRefreshType rRU=, Boolean rhU=)
       at ThinkGeo.MapSuite.WpfDesktopEdition.TileOverlay.qRU=(RectangleShape qhU=, OverlayRefreshType qxU=)
       at ThinkGeo.MapSuite.WpfDesktopEdition.TileOverlay.DrawCore(RectangleShape targetExtent, OverlayRefreshType overlayRefreshType)
       at ThinkGeo.MapSuite.WpfDesktopEdition.Overlay.Draw(RectangleShape targetExtent, OverlayRefreshType refreshType)
       at ThinkGeo.MapSuite.WpfDesktopEdition.WpfMap.UxQ=(Overlay VhQ=, RectangleShape VxQ=, OverlayRefreshType WBQ=)
       at ThinkGeo.MapSuite.WpfDesktopEdition.WpfMap.RhQ=(IEnumerable`1 SxQ=, RectangleShape TBQ=, OverlayRefreshType TRQ=)
       at ThinkGeo.MapSuite.WpfDesktopEdition.WpfMap.RhQ=(RectangleShape RxQ=, OverlayRefreshType SBQ=)
       at ThinkGeo.MapSuite.WpfDesktopEdition.WpfMap.DrawCore(RectangleShape targetExtent, OverlayRefreshType overlayRefreshType)
       at ThinkGeo.MapSuite.WpfDesktopEdition.WpfMap.Draw(RectangleShape targetExtent, OverlayRefreshType refreshType)
       at ThinkGeo.MapSuite.WpfDesktopEdition.WpfMap.NhQ=(RectangleShape NxQ=)
       at ThinkGeo.MapSuite.WpfDesktopEdition.WpfMap.Refresh()
       at ThinkGeo.MapSuite.WpfDesktopEdition.WpfMap.JBQ=(Object JRQ=, EventArgs JhQ=)
       at System.Windows.Media.Animation.Clock.FireEvent(EventPrivateKey key)
       at System.Windows.Media.Animation.Clock.RaiseAccumulatedEvents()
       at System.Windows.Media.Animation.TimeManager.RaiseEnqueuedEvents()
       at System.Windows.Media.Animation.TimeManager.Tick()
       at System.Windows.Media.MediaContext.RenderMessageHandlerCore(Object resizedCompositionTarget)
       at System.Windows.Media.MediaContext.AnimatedRenderMessageHandler(Object resizedCompositionTarget)
       at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
       at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
       at System.Windows.Threading.DispatcherOperation.InvokeImpl()
       at System.Windows.Threading.DispatcherOperation.InvokeInSecurityContext(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Windows.Threading.DispatcherOperation.Invoke()
       at System.Windows.Threading.Dispatcher.ProcessQueue()
       at System.Windows.Threading.Dispatcher.WndProcHook(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
       at MS.Win32.HwndWrapper.WndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam, Boolean& handled)
       at MS.Win32.HwndSubclass.DispatcherCallbackOperation(Object o)
       at System.Windows.Threading.ExceptionWrapper.InternalRealCall(Delegate callback, Object args, Int32 numArgs)
       at MS.Internal.Threading.ExceptionFilterHelper.TryCatchWhen(Object source, Delegate method, Object args, Int32 numArgs, Delegate catchHandler)
       at System.Windows.Threading.Dispatcher.LegacyInvokeImpl(DispatcherPriority priority, TimeSpan timeout, Delegate method, Object args, Int32 numArgs)
       at MS.Win32.HwndSubclass.SubclassWndProc(IntPtr hwnd, Int32 msg, IntPtr wParam, IntPtr lParam)
       at MS.Win32.UnsafeNativeMethods.DispatchMessage(MSG& msg)
       at System.Windows.Threading.Dispatcher.PushFrameImpl(DispatcherFrame frame)
       at System.Windows.Threading.Dispatcher.PushFrame(DispatcherFrame frame)
       at System.Windows.Threading.Dispatcher.Run()
       at System.Windows.Application.RunDispatcher(Object ignore)
       at System.Windows.Application.RunInternal(Window window)
       at System.Windows.Application.Run(Window window)
       at System.Windows.Application.Run()
       at Dosewin.App.Main() in c:\dev\isr\dosewin\App\Dosewin\obj\Debug\App.g.cs:line 0
       at System.AppDomain._nExecuteAssembly(RuntimeAssembly assembly, String[] args)
       at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
       at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
       at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
       at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
       at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
       at System.Threading.ThreadHelper.ThreadStart()
  InnerException: System.Runtime.InteropServices.COMException
       _HResult=-2003292336
       _message=Exception from HRESULT: 0x88982F50
       HResult=-2003292336
       IsTransient=false
       Message=Exception from HRESULT: 0x88982F50
       ErrorCode=-2003292336
       InnerException: 


Anyone run into this before and what exactly does it mean?











Hi Klaus, 
  
 Sorry we haven’t met this exception before, could you please test your code in some any other machine and make sure whether that’s caused by your OS environment? Here I found a topic about this: support.microsoft.com/kb/2771290 
  
 And if that can be reproduced in other machine, please upload the test sample so we can reproduced that and help you found the reason. 
  
 Regards, 
  
 Don

I don’t know Klaus or how his code makes this exception occur but we have the exact same problem. 
  
 Using GoogleMapsOverlay shows the map but as soon as you try to zoom it, it crashes with NotSupportedException. 
  
 I have tried with the newest version (9.0.0.210) running on Windows 8. 
  
 If I try to use GoogleMapsLayer instead, then it works. 
  
 So I assume something is wrong with GoogleMapsOverlay?

Hi Morten, 
  
 Could you please paste some code here about how to set property for GoogleMapsOverlay? In WPF edition our GoogleMapsOverlay is a wrapper for GoogleMapsLayer, so I want to reproduce that and see where is the problem. 
  
 Regards, 
  
 Don

Nothing special just: 
  
 wpfMap.MapUnit = GeographyUnit.Meter; 
 wpfMap.ZoomLevelSet = new GoogleMapsZoomLevelSet(); 
  
 var googleOverlay = new GoogleMapsOverlay() 
 { 
     MapType = GoogleMapsMapType.Satellite, 
 }; 
  
 wpfMap.Overlays.Add("GoogleOverlay", googleOverlay); 
  
 Zoom in and out a few times and it crashes. 
  
 It does not seem to happen with GoogleMapsLayer.

Hi Morten, 
  
 Thanks for your more information, but I hadn’t succeed reproduced that today. 
  
 Does that appear frequently? 
  
 Regards, 
  
 Don

Yes this happens every time I use the GoogleMapsOverlay. 
  
 Never happens with GoogleMapsLayer. 
  
 I wonder if this is somehow related to how licenses can be set in the 2. 
 It seems like the PrivateKey property does not work for either of them. 
 When I need to assign my key for GoogleMapsLayer I add the CreatingRequest event and add the key like this: 
  
  
private static void GoogleLayer_CreatingRequest(object sender, CreatingRequestGoogleMapsLayerEventArgs e)
{
    e.RequestUri = new Uri(e.RequestUri.AbsoluteUri + "&key=
}
 
  
 For GoogleMapsOverlay there seems to be no way to set the key like that. 
  
 However even when not setting a Key and use the small amount of free tiles Google allow it still throws the exception (the one Klaus posted and not one about bad license). 
  
 To bad Klaus is not responding so we could hear if his problem is the same.

Hi Morten, 
  
 For GoogleMapsOverlay you can append the key in SendingRequest event. 
  
 It looks the Google need a cliend id and private key together, the client id as parameter "client" and private key as parameter "signature". 
  
 I remembered we used single key as parameter before, but we get the update from Google so it changed to use clientid and key together now. 
  
 Regards, 
  
 Don

Don could you give an example of how to append a key in the SendingRequest event of GoogleMapsOverlay, the properties I have looked at cannot be set so I must be missing something.

Hi Morten, 
  
 It just like your code above: 
  
  
    GoogleMapsOverlay googleMapsOverlay = new GoogleMapsOverlay();
            googleMapsOverlay.SendingWebRequest += googleMapsOverlay_SendingWebRequest;


        void googleMapsOverlay_SendingWebRequest(object sender, SendingWebRequestEventArgs e)
        {
            e.WebRequest = WebRequest.Create(e.WebRequest.RequestUri + "your key");
        }