ThinkGeo.com    |     Documentation    |     Premium Support

DefaultMarkerStyle WebImage ImageVirtualPath issue

Hi,


Following the issue here gis.thinkgeo.com/Support/Dis...fault.aspx I installed the Development build of 4.5.17. The context menu issue seems to have been resolved.


There seem to now be an issue with the DefaultMarkerStyle WebImage ImageVirtualPath, I wonder is it related to the recent changes here. gis.thinkgeo.com/Support/Dis...fault.aspx


Attached is a sample project which demonstrates the issue.


Rgds,


Liam



WebImage_Issue_1.zip (254 KB)

Hi, Liam


Thanks for your sample project.


There are two problems in your codes.
One is setting the virtual path which is the relative path and it can’t start with “~”. In your sample, please set it like the code below:
liftOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage = new WebImage("i/home_32x32.png", 80, 80);
Or
liftOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage = new WebImage("../i/home_32x32.png", 80, 80);
In the “Markers” folder of our installed samples, and there are many samples related with how to set the virtual path for the web image. Please have a look at it.
Another problem is that even though you have set the dimension of web image is 80*80 (the original is 32*32) and there is no change for the image. Yes, this problems is related with the recent change comes from the post you have mentioned.
If you want to fix that, adding the script codes below before the closing body tag.
    <script type="text/javascript">
 
        function ConvertJsonToIcon(json, imgRootPath) {
            var size;
            if (json.w == 0 && json.h == 0) {
                size = null;
            }
            else {
                size = new OpenLayers.Size(json.w, json.h);
            }
 
            if (json.url == '') {
                json.url = imgRootPath + 'theme/default/img/marker_blue.gif';
            }
 
            var icon = new OpenLayers.Icon(json.url, size);
 
            if (size) {
               icon.offset = new OpenLayers.Pixel(CalculateOffset(json.ox, size.w), CalculateOffset(json.oy, size.h));
            }
 
            return icon;
        }
    
</script>
 
If you still have issues then please let us know.
Thanks,
Khalil

Hi Khalil, 



Thanks for that. The issue with the icon size was a result of experimentation on my side to find the source of the propblem, however its good to have the script. 



Will let you know how it goes.



Liam



Hi, Liam 
  
 Hope it could help you. Anyway, any problems please feel free to let us know. 
  
 Thanks, 
  
 Khalil