[OpenLayers-Users] Cluster strategy (using different icon)

Donald Kerr donald.kerr at dkerr.co.uk
Sat Jan 26 07:13:50 PST 2013


Hopefully the following will help you:

	var myStyleMap = new OpenLayers.StyleMap({
		'default': new OpenLayers.Style({
			backgroundGraphic: "../images/myhadow.png",
			backgroundWidth: 29,
			backgroundHeight: 19,
			backgroundGraphicZIndex: 10,
			backgroundXOffset: -10,
			backgroundYOffset: -10,
			externalGraphic: "${getExternalGraphic}",
			graphicWidth: "${getGraphicWidth}",
			graphicHeight: "${getGraphicHeight}",
			graphicZIndex: 11,

			cursor: 'default',

			label: "${getLabel}",
			labelAlign: "lt",
			labelXOffset: "-10",
			labelYOffset: "-14",

			fontColor: "black",
			fontSize: "${getFontSize}",
			fontFamily: "'Arial'",
			fontWeight: "bold",

			labelOutlineColor: "#FFFFC0",
			labelOutlineWidth: 4
		},{
		context: {
			getExternalGraphic: function(feature) {
				if (feature.cluster) {
					return "../images/mycluster.png";
				} else {
					return "../images/my.png";
				}

			},
			getGraphicWidth: function(feature) {
				if (feature.cluster) {
					return 32;
				} else {
					return 19;
				}
			},
			getGraphicHeight: function(feature) {
				if (feature.cluster) {
					return 31;
				} else {
					return 19;
				}
			},
			getLabel: function(feature) {
	
if(document.getElementById('OLBtnWaterInfo').className=='OverlayButtonOn') {
					if (feature.cluster) {
						var label = "";
						for (i=0;i  <=
feature.cluster.length - 1; i++) {
							label = label +
feature.cluster[i].attributes["MyData1"] + "\n";
						}
						return label;
					} else {
						return
feature.attributes["ConnectedPipeDiameter"];
					}
				} else {
					return '';
				}
			},
			getFontSize: function(feature) {
				if
(document.getElementById('OLBtnMagnify').className=='OverlayButtonOn') {
					return "30px";
				} else {
					return "16px";
				}
			}
		}
	})});

	//====== my Cluster Strategy ======

	var myCluster = new OpenLayers.Strategy.Cluster({
		distance: 50,
		threshold: 2,
		clusteringActivated: false,
		deactivate: function() {
			if (this.clusteringActivated) {
				this.clusteringActivated = false;
				var deactivated =
OpenLayers.Strategy.prototype.deactivate.call(this);
				if(deactivated) {
					var features = [];
					var clusters = this.layer.features;
					for (var i=0; i < clusters.length;
i++) {
						var cluster = clusters[i];
						if (cluster.cluster) {
							for (var j=0; j <
cluster.cluster.length; j++) {
	
features.push(cluster.cluster[j]);
							}
						} else {
						features.push(cluster);
					}
				}
				this.layer.removeAllFeatures();
				this.layer.events.un({
					"beforefeaturesadded":
this.cacheFeatures,
					"moveend": this.cluster,
					scope: this
				});
				this.layer.addFeatures(features);
					this.clearCache();
				}
				return deactivated;
			}
		},
		activate: function() {
			if (!this.clusteringActivated) {
				this.clusteringActivated = true;
				var activated =
OpenLayers.Strategy.prototype.activate.call(this);
				if(activated) {
					var features = [];
					var clusters = this.layer.features;
					for (var i=0; i < clusters.length;
i++) {
						var cluster = clusters[i];
						if (cluster.cluster) {
							for (var j=0; j <
cluster.cluster.length; j++) {
	
features.push(cluster.cluster[j]);
							}
						} else {
	
features.push(cluster);
						}
					}
					this.layer.removeAllFeatures();
					this.layer.events.on({
						"beforefeaturesadded":
this.cacheFeatures,
						"moveend": this.cluster,
						scope: this
					});
					this.layer.addFeatures(features);
					this.clearCache();
				}
				return activated;
			}
		}
	});

	//====== my WFS ======

	my = new OpenLayers.Layer.Vector('my',{
		strategies: [new OpenLayers.Strategy.BBOX(), myCluster],
		styleMap: myStyleMap,
		visibility: false,
		minScale: maxShowOverlayScale,
		protocol: new OpenLayers.Protocol.WFS({
			url: WFS_Host, 
			featureType: 'my',
			featureNS: 'http://mapserver.gis.umn.edu/mapserver',
			featurePrefix: 'ms',
			geometryName: 'msGeometry',
			srsName: 'EPSG:27700',
			version: '1.1.0' 
		})
	});
	MapOS.addLayer(my);


Regards,

Donald



 

-----Original Message-----
From: openlayers-users-bounces at lists.osgeo.org
[mailto:openlayers-users-bounces at lists.osgeo.org] On Behalf Of robertico
Sent: 26 January 2013 12:37
To: openlayers-users at lists.osgeo.org
Subject: Re: [OpenLayers-Users] Cluster strategy (using different icon)

There seem to be more questions than answers here



--
View this message in context:
http://osgeo-org.1560.n6.nabble.com/Cluster-strategy-using-different-icon-tp
5028447p5030035.html
Sent from the OpenLayers Users mailing list archive at Nabble.com.
_______________________________________________
Users mailing list
Users at lists.osgeo.org
http://lists.osgeo.org/mailman/listinfo/openlayers-users


-----
No virus found in this message.
Checked by AVG - www.avg.com
Version: 2013.0.2890 / Virus Database: 2639/6056 - Release Date: 01/25/13



More information about the Users mailing list