ThinkGeo.com    |     Documentation    |     Premium Support

This.layer.renderer

hello


I ask for excuses and I hope that understand me,  because my ingles not is very good and is my first time what write in discussion foruns


I have a problem when create a circular Shape

I have a javaScript function that is executed when client drawn end, this function it works well when create a poligonal shape, but generates an error when shape is circular or rectangular.


the error generated is ''this.layer.renderer' is null or not an object' in opl_Georesorce.axd.


the code of the function that generate this error is:




var TrackShapeFinished = function(feature) {

        var GeoFunc = new ThinkGeo('<%=Map.ClientID %>');

        var Mode = document.getElementById('<%=MapModeControl.ClientID %>').value;

        if (Mode == '<%=MapModes.CreatePolygonalRegion%>' || Mode == '<%=MapModes.CreateRectangularRegion%>' || Mode == '<%=MapModes.CreateCircularRegion%>' || Mode == '<%=MapModes.CreateCLTPoint%>') {

            GeoFunc.SetEditSetting(EditSettings.Reshape | EditSettings.Rotate | EditSettings.Drag);

            if (Mode == '<%=MapModes.CreateCircularRegion%>' || Mode == '<%=MapModes.CreateCLTPoint%>') {

                GeoFunc.SetEditSetting(EditSettings.Resize | EditSettings.Drag);

            }

        }

        GeoFunc.SetDrawMode("Modify");

    }


I work with version 3.1.299.0 the map


in advance thank you very much



Hi Diego, 
  
 I see; actually to draw a circle or rectangle is still a polygon. It should be fine. I think there might be some issue in the JavaScript code or you might be track the shapes before the page is completely loaded. Please try to clear the IE’s cache and reload your application again. Try the operation after all the page is loaded. If the issue still exists, please provide us a simple demo so that we can recreate your issue; because your code refers to a little server side code. 
  
 Please try my first solution and looking forward your feedback. 
  
 Thanks, 
 Howard

hi Howard.


I not have been unable solve the problem with your comments.


I've created a simple demo that recreate the error. 


I not have including the dll. of mapsuite because exceeds the maximum file size allowed. 


I would remind you that I work with version 3.1.299.0 of map, and the including references are GeoAPI.dll, MapSuiteCore.dll, NetTopologySuite.dll, WebEdition.dll 


thanks.



1577-MapsuiteError.zip (115 KB)

Diego,



Thanks for your demo. the track shape finished is not the last step of the life circle in this process. So when you changed setting in that method, it'll affect the other process; so this issue happens. So I set a timer to do your settings and your app works fine. Please try the code below:

var TrackShapeFinished = function(feature) {
    var handler = Function.createDelegate(GeoFunc, function() {
        this.SetEditSetting(EditSettings.Resize | EditSettings.Drag);
        this.SetDrawMode("Modify");
    });
    var timer = setTimeout(handler, 500);
}



Thanks and let me know if you have more questions,

Howard



Thanks  Howard.


I implemented the code you sent and it solved the problem



for now I have no other problem, but should find another, write a new post in the forum



again thank you very much.


Diego



Diego, 
  
 You are welcome; please let me know if you have more queries. 
  
 Thanks, 
 Howard