[OpenLayers-Users] Customising Toolbar

Cicconetti, Bob BCicconetti at dnr.state.md.us
Wed Apr 25 12:42:23 EDT 2007


If you look at the code snippet I sent, there were references to three
functions, using the onSelect and onUnselect callbacks.

So, when the toolbar icon is selected, the
OpenLayers.Control.SelectFeature associated with that icon is activated.
Clicking on a feature then selects the feature, and calls the
appropriate callback. So for the information button, it calculates
area/length and puts that on the screen somewhere when a feature is
clicked on. If the delete button is active, it deletes that feature.

Note that you have to unselect the feature before deleting it, or Bad
Things (TM) happen. Actually, I think it's a bug; I'll add it to the
tracker later.

R C


// Calculate area or length of features; convert units.
  function feature_info(feature) {
   //Extend to allow string length as well.
      if (feature.geometry.CLASS_NAME == "OpenLayers.Geometry.Polygon")
	{

	var str = feature.geometry.getArea();
	// Assume units are meters, for now.
	// Magic numbers are evil, but ah well.
	var sqft = str / 0.09290304;
	var acres = str / 4046.856422;

	// FIXME: Round and truncate. 8 sig figs?
	if (sqft < 4000)
	 str = "Area: (sq ft.) " + sqft;
	else
	 str = "Area: (acres) " + acres;
	
	document.getElementById('area').innerHTML = str;

	}
      else if (feature.geometry.CLASS_NAME ==
"OpenLayers.Geometry.LineString")
        {
        var str = feature.geometry.getLength();
	var feet = str / 0.3048;
	var miles = str / 1609.344;

	if (feet < 2000)
	 str = "Length: (feet) " + feet;
	else
	 str = "Length: (miles) " + miles;

	document.getElementById('area').innerHTML = str;
        }

  }

  function clear_feature_info(geometry) {
	document.getElementById('area').innerHTML = "Select Feature for
Area or Length.";
  }

  function deleteFeature(geometry) {
	this.unselect(geometry);
//  	this.layer.removeFeatures(geometry.feature);
  	this.layer.removeFeatures(geometry);
  }

> -----Original Message-----
> From: Benoit PESTY [mailto:tchule at hotmail.com]
> Sent: Wednesday, April 25, 2007 12:30 PM
> To: Cicconetti, Bob; users at openlayers.org
> Subject: RE: [OpenLayers-Users] Customising Toolbar
> 
> Cannot help on this one, don't know ArcView ^^
> 
> Another question about the toolbar :
> 
> I've managed to add the Delete and Select tools on the vector layer.
> 
> I have a function that give me info on a base layer (similar to the
CIA
> Factbook example) that is activated with the following line :
> 
> map.events.register('click', map, feature_info);
> 
> But this activation is permanent , what i'd like to do is to link this
> function to my toolbar. Should I create a new Control object or is
there a
> way to bind my function to an existing Control (Navigation,
MouseDefaults,
> ...) ?
> 
> Thanks a lot,




More information about the Users mailing list