[Geomoose-users] Calling javascript from mapbook.xml,
or change params with javascript
Brent Fraser
bfraser at geoanalytic.com
Tue May 24 10:34:19 EDT 2011
Bob,
Have a look at http://www.geomoose.org/docs/user_extensions.html and
varoius pages on the wiki
(http://www.geomoose.org/wiki/index.php/Main_Page), and the functions
defined in the geomoose.js file. The functions in the file are the
user-accessible "official" GeoMOOSE API. These resources may give you a
few ideas.
In one of my sites, I needed to get the value of the selected item in a
combo box and use it for input value in services.
My combo box is a little complicated; the important bits are
id="GA_SelectedImage" and the first part of the option value (1,2,3,etc)
<div id="control-panel">
<center>
Image:
<select id="GA_SelectedImage"
onchange="GeoMOOSE.UX.registered_extensions.GA_ImageOps.prototype.zoomToImage(this.value);">
<option value="">Choose Image:</option>
<option
value="1:-2172034,13348962,-1027313,14456993:Landsat/p230r005_20010703">L7
2001-07-03 p230-r005</option>
<option
value="2:-2564614,12851203,-1468813,13863841:Landsat/p230r006_20010703">L7
2001-07-03 p230-r006</option>
<option
value="3:-2564614,12851203,-1468813,13863841:Landsat/p231r006_20010608">L7
2001-06-08 p231-r006</option>
I have a service called "add_polygon" (see the Feature Editor doc) where
one of the inputs is defined as "imageid":
<service name="add_polygon">
<input type="ga_get_imageid" name="feature:imageid" value="0"/>
Note the type tag value refers to my custom input type. And [I think?]
since its outside the the "<step>" tag it is not shown to the user. If
I wanted to make it visible and changeable by the user I could have done:
<service name="add_polygon">
<step type="input">
<input type="ga_get_imageid" name="feature:imageid" value="0"/>
I defined the type by creating a Javascript file in the extensions
folder containing:
GeoMOOSE.Services.InputType.GetImageID =
OpenLayers.Class(GeoMOOSE.Services.InputType, {
MAPBOOK_NAME: "ga_get_imageid",
getValue: function() {
var selection = document.getElementById('GA_SelectedImage');
var theValue = selection.children[selection.selectedIndex].value;
var aParams = theValue.split(':');
var id = aParams[0];
return id;
}
});
And my JavaScript file is loaded in my main html page:
<script type="text/javascript"
src="extensions/GeoAnalytic_Custom.js"></script>
So basically, when the service is invoked, it processes the input types,
and calls the ga_get_imageid function. The function finds the combo box
control, gets the selected value, and returns the important part of the
value. GeoMoose sets the service's input type value to that returned
value and passes it to the target URL of the service.
Somewhat complicated, but it separates my custom JavaScript from the
standard GeoMOOSE (making updates much easier).
Best Regards,
Brent Fraser
On 5/23/2011 12:11 PM, Bistrais, Bob wrote:
>
> Hi,
>
> I'm looking to dynamically control some of the parameter values in
> mapbook.xml. In a nutshell, I've been able to save a selected town
> name by holding it in a hidden input in index.html. So what I'd like
> to do, in the search_parcels service, is to update a parameter with
> that town name. I believe it would make use of some javascript, but
> I'm not quite sure how to do it. Any suggestions? Any more
> clarification needed?
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/geomoose-users/attachments/20110524/a684805c/attachment.html
More information about the Geomoose-users
mailing list