Hi all, Thank U.
I am trying to add a polygon in a button click.The below code wrote in button click.But the polygon not showing. If I will pass some points direct like this then it is working perfect.Where is the problem??
polygon1.addRing([[58.4245719470205, 23.582511030118049], [58.423799470824214, 23.594545845196812],[58.44002147094627, 23.5743298721676], [58.443798021239232, 23.578735174416867], [58.4245719470205, 23.582511030118049]]);
while (CMt <= (list.d.length - 1))
{
if (Points1 != "") {
Points1 = Points1 + ",";
}
Points1 = Points1 + "[" + list.d[CMt].EPolyLong + "," + list.d[CMt].EPolyLat + "]";
gname = list.d[CMt].EPolyGname;
GDesc = list.d[CMt].EPolyGDesc;
CMt = CMt + 1;
};
if( Points1 != "")
{
AddPolygonGraphics(Points1, gname, GDesc);
Points1 = "";
}
function AddPolygonGraphics(Points1, gname, GDesc) {
Points1 = "[" + Points1 + "]"
var polygon1 = new Polygon(new SpatialReference({ wkid: 4326 }));
//polygon1.addRing([[58.4245719470205, 23.582511030118049], [58.423799470824214, 23.594545845196812],[58.44002147094627, 23.5743298721676], [58.443798021239232, 23.578735174416867], [58.4245719470205, 23.582511030118049]]);
polygon1.addRing(Points1);
// alert(polygon1.rings[0].length);
// map is in web mercator so transform the geometry
var poly_wm = webMercatorUtils.geographicToWebMercator(polygon1);
var symbol = new SimpleFillSymbol();
var strhotspot = (gname.trim());
if (GDesc != "")
{
strhotspot = strhotspot + "," + (GDesc.trim());
}
var infoTemplate = new InfoTemplate();
infoTemplate.content = strhotspot;
var graphic = new Graphic(poly_wm, symbol);
graphic.setInfoTemplate(infoTemplate);
MyGraphicsLayerGL.add(graphic);
mapDiv.style.visibility = "visible";
DivesriLogoImage.style.visibility = "hidden";
}
Solved! Go to Solution.
you dont need "[". Just use Points1.push([list.d[CMt].EPolyLong, list.d[CMt].EPolyLat]);
doesn't it work?
again in AddPolygonGraphics you dont need to add "[" you are simply converting an array into string.
The addRing Method in the Polygon takes either a Point[] or Number[][]. whereas, you are providing it with a string value. That might be the cause of the problem. Try below code
Points1= []; while (CMt <= (list.d.length - 1)){ ar newPoint = new Point(list.d[CMt].EPolyLong, list.d[CMt].EPolyLat ,new SpatialReference({ wkid: 4326 })); gname = list.d[CMt].EPolyGname; GDesc = list.d[CMt].EPolyGDesc; Points1.push(newPoint); CMt = CMt + 1; };
Or
Points1= []; while (CMt <= (list.d.length - 1)){ Point1.push([list.d[CMt].EPolyLong, list.d[CMt].EPolyLat]); gname = list.d[CMt].EPolyGname; GDesc = list.d[CMt].EPolyGDesc; CMt = CMt + 1; };
Thank u. Here I tried in the below way. But when I add "[" character and when it reach to AddPolygonGraphics again the same wrong result
Can u help me?
Points1 = [];
while (CMt <= (list.d.length - 1))
{
Points1.push("["+[list.d[CMt].EPolyLong, list.d[CMt].EPolyLat]+"]");
gname = list.d[CMt].EPolyGname;
GDesc = list.d[CMt].EPolyGDesc;
CMt = CMt + 1;
}
alert(Points1.length);
if(Points1.length>0)
{
AddPolygonGraphics(Points1, gname, GDesc);
Points1 = [];
}
function AddPolygonGraphics(Points1, gname, GDesc) {
alert(Points1);
Points1 = "[" + Points1 + "]"
var polygon1 = new Polygon(new SpatialReference({ wkid: 4326 }));
//polygon1.addRing([[58.4245719470205, 23.582511030118049], [58.423799470824214, 23.594545845196812],[58.44002147094627, 23.5743298721676], [58.443798021239232, 23.578735174416867], [58.4245719470205, 23.582511030118049]]);
polygon1.addRing(Points1);
// alert(polygon1.rings[0].length);
// map is in web mercator so transform the geometry
var poly_wm = webMercatorUtils.geographicToWebMercator(polygon1);
var symbol = new SimpleFillSymbol();
var strhotspot = (gname.trim());
if (GDesc != "")
{
strhotspot = strhotspot + "," + (GDesc.trim());
}
var infoTemplate = new InfoTemplate();
infoTemplate.content = strhotspot;
var graphic = new Graphic(poly_wm, symbol);
graphic.setInfoTemplate(infoTemplate);
MyGraphicsLayerGL.add(graphic);
}
you dont need "[". Just use Points1.push([list.d[CMt].EPolyLong, list.d[CMt].EPolyLat]);
doesn't it work?
again in AddPolygonGraphics you dont need to add "[" you are simply converting an array into string.
Yes dear friend,
Works well...Thank u so much....