view flys-client/src/main/java/de/intevation/flys/client/client/ui/map/GetFeatureInfo.java @ 1404:09566522e899

Query GetFeatureInfo with layers defined in MapThemePanel - which are the real layers in the map. flys-client/trunk@3289 c6561f87-3c4e-4783-a992-168aeb5c3f6f
author Ingo Weinzierl <ingo.weinzierl@intevation.de>
date Fri, 18 Nov 2011 12:12:07 +0000
parents 15ef3d3081b7
children e0f4ea518d59
line wrap: on
line source
package de.intevation.flys.client.client.ui.map;

import java.util.List;

import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.rpc.AsyncCallback;

import com.smartgwt.client.util.SC;

import org.gwtopenmaps.openlayers.client.Map;
import org.gwtopenmaps.openlayers.client.LonLat;
import org.gwtopenmaps.openlayers.client.Pixel;
import org.gwtopenmaps.openlayers.client.event.MapClickListener;

import de.intevation.flys.client.shared.model.FeatureInfo;

import de.intevation.flys.client.client.FLYSConstants;
import de.intevation.flys.client.client.services.GFIService;
import de.intevation.flys.client.client.services.GFIServiceAsync;
import de.intevation.flys.client.client.ui.ThemePanel;


public class GetFeatureInfo implements MapClickListener {

    protected GFIServiceAsync gfiService = GWT.create(GFIService.class);

    protected FLYSConstants MSG = GWT.create(FLYSConstants.class);

    protected Map        map;
    protected ThemePanel themePanel;
    protected String     infoFormat;


    /**
     * @param map
     * @param themes
     * @param url
     * @param infoFormat
     */
    public GetFeatureInfo(Map map, ThemePanel themePanel, String infoFormat) {
        this.map        = map;
        this.themePanel = themePanel;
        this.infoFormat = infoFormat;
    }


    public void activate(boolean activate) {
        if (activate) {
            map.addMapClickListener(this);
        }
        else {
            map.removeListener(this);
        }
    }


    @Override
    public void onClick(MapClickListener.MapClickEvent e) {
        LonLat lonlat = e.getLonLat();
        Pixel  pixel  = map.getPixelFromLonLat(lonlat);

        gfiService.query(
            themePanel.getThemeList().getThemes(),
            infoFormat,
            map.getExtent().toString(),
            map.getProjection(),
            (int) map.getSize().getHeight(),
            (int) map.getSize().getWidth(),
            pixel.x(), pixel.y(),
            new AsyncCallback<List<FeatureInfo>>() {
            public void onFailure(Throwable e) {
                SC.warn(MSG.getString(e.getMessage()));
            }

            public void onSuccess(List<FeatureInfo> features) {
                new GetFeatureInfoWindow(features).show();
            }
        });
    }
}

http://dive4elements.wald.intevation.org