ThinkGeo.com    |     Documentation    |     Premium Support

Draw Point through javascript

Hiiii,


i want to draw only one point on the map through javascript. If user add another point he will get alert 'point is already added'. When the point was added on the map, map_TrackShapFinished event will be called where i am doing little code there. 


Please provide sample code, how could i do above thing in javascript?


Thanks,


Badal



Badai,



Please attache the JavaScript below to between the header tag, 

var tgMap = null;

var OnMapCreated = function(map) {
    tgMap = map;
};

var OnMap1TrackShapeFinished = function(feature) {
    var overlay = tgMap.getLayersByName('EditOverlay')[0];
    if (overlay.features.length > 1) {
        overlay.destroyFeatures([feature]);
        alert('Added');
    }
}
 

Also, please don't forget the server code below.

Map1.OnClientDrawEnd = "OnMap1TrackShapeFinished"; 

Please let me know if you have any questions.



Thanks,

Howard



Hello Howard,


Thanks for your code. But I want to check whether any point already added in map and this point is added under "Points" layer of "DynamicOverlay" and this overlay added under CustomOverlay in the map. Below code is for your understanding heirarchy where point is added.


//Field Declaration


private LayerOverlay dynamicOverlay;


//Property


public LayerOverlay DynamicOverlay

    {

        get

        {

            if (this.dynamicOverlay == null)

                this.dynamicOverlay = mainMap.CustomOverlays.Where(l => l.Name == "DynamicOverlay").FirstOrDefault() as LayerOverlay;

            return this.dynamicOverlay;

        }

    }


//Add Dynamic overlay in Custom Overlay


            dynamicOverlay = new LayerOverlay();

            dynamicOverlay.TileType = TileType.SingleTile;

            dynamicOverlay.Name = "DynamicOverlay";

            dynamicOverlay.IsVisibleInOverlaySwitcher = false;

            dynamicOverlay.IsBaseOverlay = false;

             mainMap.CustomOverlays.Add(dynamicOverlay);


 


//Add Points Overlay in Custom Overlay


InMemoryFeatureLayer pointsOverlay = new InMemoryFeatureLayer();


DynamicOverlay.Layers.Add("Points", pointsOverlay);


 


Can provide me javascript code for how to check above thing?


Thanks.


Badal



Hi Badal, 
  
 I’m afraid a point in a layer cannot be found in pure JavaScript. I’m not sure whether you understand between Overlay and Layer. You know LayerOverlay maintains a collection of layers; one overlay indicates an image on the client side; while layer is just a part of the data for rendering the overlay or an image. So it’s easy to find an overlay back on the client side but layer is impossible to access. 
  
 On the other hand, the client JavaScript is fired before the server event map_TrackShapFinished; so I don’t understand why you don’t find the point logic on the server side. Or you just want to use all JavaScript code and get rid of the server event. 
  
 Another thing I don’t understand is that do you have any identifier for your points? Or do you have some condition to find the points back? I just think you can consider about callback to find the points. 
  
 Please info me more or send me a small sample to help me understand your scenario. 
  
 Sorry for the inconvenience and look forward your feedback. 
  
 Thanks, 
 Howard