Solved! Go to Solution.
I could display image when I set for Basic Layer Url = "http://server.arcgisonline.com/ArcGIS/rest/services/ESRI_StreetMap_World_2D/MapServer" instead of "http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer". But why KmlLayer depends on Basic Layer?
That rings a bell.
The extent of the images is set with the geographical coordinates found in the KML file but this extent is not the right one when your map is using projected coordinates.
In fact, KML Groundoverlays don't support autoprojection to non geographic coordinates. It's identified as a possible future enhancement but not planned at this time.
It's probably possible to project the extent by yourself (not tested and probably not that easy though):
- go through the KML layer hierachy to find all ElementLayers
- for each ElementLayer, loop on the elements
- for each element, project the extent from Geographical coordinates to Mercator
Sorry I should have thought about that sooner.
For the WebMercator case and images that cover a small area, this has been fixed in the ArcGIS for WPF version 10.1.1 and ArcGIS for Silverlight version 3.1.
For others map spatial references, it's not fixed. The workaround may be to project the groundoverlay extent by yourself by using a geometry service. This may make sense for SpatialReferences whose the projection of a WGS84 envelope is also an envelope (i.e a projection where meridians and parallels are perpendicular straight lines).
But anyway this will not be accurate for images that cover a large area (due to the image distorsion)