I have two functions `
createPoints(); and addClusters();
to create points and cluster points from JSON point values and I am switching the map presentation (Points<-->Cluster) by suing a Chechbox like :
if($("input[type='checkbox'][name='clusterPoints']").is(':checked')) { createPoints(); }else{ addClusters();} $("input[type='checkbox'][name='clusterPoints']").change(function(){ if($(this).is(':checked')){ map.removeLayer(clusterLayer); map.graphics.show(); } else{ map.graphics.hide(); addClusters(); } });
now after switching from Cluster to Points, I am missing the points InfoTemplate(); (not poping up on points on click) but the Cluster PopupTemplate(s) work fine . Here is the how code:
function createPoints(){ for (var i = 0; i < mapInfo.length; i++) { var project = mapInfo; var point = new Point(project.Longitude, project.Latitude); var pointSymbol = new SimpleMarkerSymbol(); pointSymbol.setStyle(SimpleMarkerSymbol.STYLE_CIRCLE); pointSymbol.setSize(12); var pointInfoTemplate = new InfoTemplate(); pointInfoTemplate.setTitle("Project Details"); pointInfoTemplate.setContent('<div class="list-group marker-info"> <a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Project</span><span class="col-md-3 marker-info-txt"><strong>'+project.ProjectID+'</strong></span></div></a> <a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Road Length</span><span class="col-md-3 marker-info-txt"><strong>'+project.RoadLength+'</strong></span></div></a> <a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Powerline Length</span><span class="col-md-3 marker-info-txt"><strong>'+project.PowerLineLength+'</strong></span></div></a> <a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Penstock</span><span class="col-md-3 marker-info-txt"><strong>'+project.Penstock+'</strong></span></div></a> <a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Installed Capacity</span><span class="col-md-3 marker-info-txt"><strong>'+project.InstalledCapacity+'</strong></span></div></a><a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Annual Firm Energy</span><span class="col-md-3 marker-info-txt"><strong>'+project.AnnualFirmEnergy+'</strong></span></div></a><a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Cost Of Energy</span><span class="col-md-3 marker-info-txt"><strong>'+project.CostOfEnergy+'</strong></span></div></a><a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Footprint</span><span class="col-md-3 marker-info-txt"><strong>'+project.Footprint+'</strong></span></div></a><a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Cost Per Year</span><span class="col-md-3 marker-info-txt"><strong>'+project.CostPerYear+'</strong></span></div></a></div> '); var pointGraphic = new Graphic(point, pointSymbol).setInfoTemplate(pointInfoTemplate); points.push(pointGraphic); } for (i = 0; i < points.length; ++i) { map.graphics.add(points); } } function addClusters() { var project=[]; for (var i = 0; i < mapInfo.length; i++) { project.push(mapInfo); } var photoInfo = []; var wgs = new SpatialReference({ "wkid": 4326 }); photoInfo.data = arrayUtils.map(mapInfo, function(p) { var latlng = new Point(parseFloat(p.Longitude), parseFloat(p.Latitude), wgs); var webMercator = webMercatorUtils.geographicToWebMercator(latlng); var attributes = { "Project ID": p.ProjectID, "Road Length": p.RoadLength, "Powerline Length": p.PowerLineLength, "Penstock": p.Penstock, "Installed Capacity": p.InstalledCapacity, "Annual Firm Energy": p.AnnualFirmEnergy, "Cost Of Energy": p.CostOfEnergy, "Footprint": p.Footprint, "Cost Per Year": p.CostPerYear, }; return { "x": webMercator.x, "y": webMercator.y, "attributes": attributes }; }); var popupTemplate = new PopupTemplate({ "title": "Project Details", "fieldInfos": [{ "fieldName": "Project ID", visible: true }, { "fieldName": "Road Length", visible: true }, { "fieldName": "Powerline Length", visible: true }, { "fieldName": "Penstock", visible: true }, { "fieldName": "Installed Capacity", visible: true }, { "fieldName": "Annual Firm Energy", visible: true }, { "fieldName": "Cost Of Energy", visible: true }, { "fieldName": "Footprint", visible: true }, { "fieldName": "Cost Per Year", visible: true }], "mediaInfos": [{ "title": "", "caption": "", "type": "image", "value": { "sourceURL": "{Image}", "linkURL": "{Link}" } }] }); clusterLayer = new ClusterLayer({ "data": photoInfo.data, "distance": 100, "id": "clusters", "labelColor": "#fff", "labelOffset": 10, "resolution": map.extent.getWidth() / map.width, "singleColor": "#888", "singleTemplate": popupTemplate }); var defaultSym = new SimpleMarkerSymbol().setSize(4); var renderer = new ClassBreaksRenderer(defaultSym, "clusterCount"); var picBaseUrl = "http://static.arcgis.com/images/Symbols/Shapes/"; var blue = new PictureMarkerSymbol(picBaseUrl + "BluePin1LargeB.png", 32, 32).setOffset(0, 15); var green = new PictureMarkerSymbol(picBaseUrl + "GreenPin1LargeB.png", 64, 64).setOffset(0, 15); var red = new PictureMarkerSymbol(picBaseUrl + "RedPin1LargeB.png", 72, 72).setOffset(0, 15); renderer.addBreak(0, 2, blue); renderer.addBreak(2, 200, green); renderer.addBreak(200, 1001, red); clusterLayer.setRenderer(renderer); map.addLayer(clusterLayer); // close the info window when the map is clicked map.on("click", cleanUp); // close the info window when esc is pressed map.on("key-down", function(e) { if (e.keyCode === 27) { cleanUp(); } }); function cleanUp() { map.infoWindow.hide(); clusterLayer.clearSingles(); } function error(err) { console.log("something failed: ", err); } window.showExtents = function() { var extents = map.getLayer("clusterExtents"); if ( extents ) { map.removeLayer(extents); } extents = new GraphicsLayer({ id: "clusterExtents" }); var sym = new SimpleFillSymbol().setColor(new Color([205, 193, 197, 0.5])); arrayUtils.forEach(clusterLayer._clusters, function(c, idx) { var e = c.attributes.extent; extents.add(new Graphic(new Extent(e[0], e[1], e[2], e[3], map.spatialReference), sym)); }, this); map.addLayer(extents, 0); }; } if($("input[type='checkbox'][name='clusterPoints']").is(':checked')) { createPoints(); }else{ addClusters();} $("input[type='checkbox'][name='clusterPoints']").change(function(){ if($(this).is(':checked')){ map.removeLayer(clusterLayer); map.graphics.show(); } else{ map.graphics.hide(); addClusters(); } });
Can you please let me know why this is happening and how I can fix this? Am using correct functions ` map.graphics.hide();` and map.removeLayer(clusterLayer); to clear map for next presentation in check box switch?
For what ever reason part of code in points
pointInfoTemplate.setTitle("Project Details");
pointInfoTemplate.setContent('<div class="list-group marker-info"> <a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Project</span><span class="col-md-3 marker-info-txt"><strong>'+project.ProjectID+'</strong></span></div></a> <a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Road Length</span><span class="col-md-3 marker-info-txt"><strong>'+project.RoadLength+'</strong></span></div></a> <a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Powerline Length</span><span class="col-md-3 marker-info-txt"><strong>'+project.PowerLineLength+'</strong></span></div></a> <a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Penstock</span><span class="col-md-3 marker-info-txt"><strong>'+project.Penstock+'</strong></span></div></a> <a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Installed Capacity</span><span class="col-md-3 marker-info-txt"><strong>'+project.InstalledCapacity+'</strong></span></div></a><a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Annual Firm Energy</span><span class="col-md-3 marker-info-txt"><strong>'+project.AnnualFirmEnergy+'</strong></span></div></a><a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Cost Of Energy</span><span class="col-md-3 marker-info-txt"><strong>'+project.CostOfEnergy+'</strong></span></div></a><a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Footprint</span><span class="col-md-3 marker-info-txt"><strong>'+project.Footprint+'</strong></span></div></a><a href="#" class="list-group-item"><div class="row"><span class="col-md-7 marker-info-txt">Cost Per Year</span><span class="col-md-3 marker-info-txt"><strong>'+project.CostPerYear+'</strong></span></div></a></div> ');
is not showing in above post! Please check the full code in attached file?