All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.gwtopenmaps.openlayers.client.control.WMSGetFeatureInfoOptions Maven / Gradle / Ivy

The newest version!
/**
 *
 *   Copyright 2015 sourceforge.
 *
 *   Licensed under the Apache License, Version 2.0 (the "License");
 *   you may not use this file except in compliance with the License.
 *   You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *
 *   Unless required by applicable law or agreed to in writing, software
 *   distributed under the License is distributed on an "AS IS" BASIS,
 *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *   See the License for the specific language governing permissions and
 *   limitations under the License.
 */
package org.gwtopenmaps.openlayers.client.control;

import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.json.client.JSONObject;
import org.gwtopenmaps.openlayers.client.layer.WMS;
import org.gwtopenmaps.openlayers.client.util.*;

/**
 * @author Dave Potts
 * @author Lukas Johansson
 */
public class WMSGetFeatureInfoOptions extends JSObjectWrapper {

    private static final String VENDOR_PARAMS = "vendorParams";

    public enum GetFeatureInfoFormat {

        HTML("text/html"), GML("application/vnd.ogc.gml");
        private String value;

        GetFeatureInfoFormat(String theValue) {
            this.value = theValue;
        }

        @Override
        public String toString() {
            return value;
        }
    }

    protected WMSGetFeatureInfoOptions(JSObject jsObject) {
        super(jsObject);
    }

    public WMSGetFeatureInfoOptions() {
        this(JSObject.createJSObject());
    }

    public void setHover(boolean hover) {
        getJSObject().setProperty("hover", hover);
    }

    public boolean getHover() {
        return getJSObject().getPropertyAsBoolean("hover");
    }

    public void setMaxFeaturess(int maxFeatures) {
        getJSObject().setProperty("maxFeatures", maxFeatures);
    }

    public int getMaxFeatures() {
        return getJSObject().getPropertyAsInt("maxFeatures");
    }

    public void setVendorParams(GetFeatureInfoVendorParam vendorParam) {
        getJSObject().setProperty(VENDOR_PARAMS, vendorParam.getJSObject());
    }

    public GetFeatureInfoVendorParam getVendorParams() {
        return GetFeatureInfoVendorParam.narrowToAttributes(this.getJSObject().getProperty(VENDOR_PARAMS));
    }

    /**
     * The URL of the WMS service to use. If not provided, the url
     * of the first eligible layer will be used.
     *
     * @param url The url to which the WmsGetFeatureInfo will be called against
     */
    public void setURL(String url) {
        getJSObject().setProperty("url", url);
    }

    public void setTitle(String title) {
        getJSObject().setProperty("title", title);
    }

    public void setQueryVisible(Boolean qvis) {
        getJSObject().setProperty("queryVisible", qvis);
    }

    /**
     * The layers to query for feature info.
     * If omitted, all map WMS layers with a url that matches this  or
     *  will be considered.
     *
     * @param layers The layers to query
     */
    public void setLayers(WMS[] layers) {
        JObjectArray jsArray = JObjectArray.narrowToJObjectArray(JSObject.createJSArray());
        for (int i = 0; layers != null && i < layers.length; i++) {
            jsArray.set(i, layers[i].getJSObject());
        }
        getJSObject().setProperty("layers", jsArray.getJSObject());
    }

    /**
     * Optional list of urls for layers that should be queried.
     * This can be used when the layer url differs from the url used for
     * making GetFeatureInfo requests (in the case of a layer using cached
     * tiles).
     *
     * Notice that this will not cause a WmsGetFeatureInfo request to be sent
     * to all urls, its merely to include layers that don't match this.url.
     * For a a request to be sent to each url the propery drillDown must be set
     * to true.
     *
     * @param urls urls that should be considered
     */
    public void setLayerUrls(String[] urls) {
        getJSObject().setProperty("layerUrls", new JStringArray(urls).getJSObject());
    }

    /**
     * Drill down over all WMS layers in the map. When
     * using drillDown mode, hover is not possible, and an infoFormat that
     * returns parseable features is required. Default is false.
     *
     * @param value indicates whether drillDown should be enabled or not
     */
    public void setDrillDown(boolean value) {
        getJSObject().setProperty("drillDown", value);
    }

    /**
     * The mimetype to request from the server
     * defaults to 'text/html'
     */
    public void setInfoFormat(String infoFormat) {
        getJSObject().setProperty("infoFormat", infoFormat);
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy