← Back to team overview

dhis2-devs team mailing list archive

Re: [Branch ~dhis2-devs-core/dhis2/trunk] Rev 3667: (GIS) Distance measuring implemented.

 

FYI, single click = new line point, double click = end of line. Screenshot
attached.

On Thu, May 19, 2011 at 15:36, <noreply@xxxxxxxxxxxxx> wrote:

> Merge authors:
>  Jan Henrik Øverland (janhenrik-overland)
> ------------------------------------------------------------
> revno: 3667 [merge]
> committer: Jan Henrik Overland <janhenrik.overland@xxxxxxxxx>
> branch nick: dhis2
> timestamp: Thu 2011-05-19 15:33:40 +0200
> message:
>  (GIS) Distance measuring implemented.
> added:
>
>  dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/measure.png
> modified:
>
>  dhis-2/dhis-web/dhis-web-mapping/src/main/resources/org/hisp/dhis/mapping/i18n_module.properties
>  dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/i18n.vm
>
>  dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/css/style.css
>
>  dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/javascript/global.js
>
>  dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/javascript/index.js
>
>
> --
> lp:dhis2
> https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk
>
> Your team DHIS 2 developers is subscribed to branch lp:dhis2.
> To unsubscribe from this branch go to
> https://code.launchpad.net/~dhis2-devs-core/dhis2/trunk/+edit-subscription
>
> === added file
> 'dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/measure.png'
> Binary files
> dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/measure.png
>      1970-01-01 00:00:00 +0000 and
> dhis-2/dhis-web/dhis-web-commons-resources/src/main/webapp/images/measure.png
>     2011-05-19 12:31:31 +0000 differ
> === modified file
> 'dhis-2/dhis-web/dhis-web-mapping/src/main/resources/org/hisp/dhis/mapping/i18n_module.properties'
> ---
> dhis-2/dhis-web/dhis-web-mapping/src/main/resources/org/hisp/dhis/mapping/i18n_module.properties
>    2011-04-28 15:43:17 +0000
> +++
> dhis-2/dhis-web/dhis-web-mapping/src/main/resources/org/hisp/dhis/mapping/i18n_module.properties
>    2011-05-19 12:57:09 +0000
> @@ -246,4 +246,5 @@
>  characters                                                     =
> characters
>  geojson_file                                           = GeoJSON file
>  history                                                                =
> History
> -api_key                                                                =
> API key
> \ No newline at end of file
> +api_key                                                                =
> API key
> +measure_distance                                       = Measure distance
> \ No newline at end of file
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/i18n.vm'
> ---
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/i18n.vm
> 2011-04-28 15:43:17 +0000
> +++
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/i18n.vm
> 2011-05-19 12:57:09 +0000
> @@ -248,5 +248,6 @@
>     characters: '$encoder.jsEscape($i18n.getString( 'characters' ) , "'")',
>     geojson_file: '$encoder.jsEscape($i18n.getString( 'geojson_file' ) ,
> "'")',
>     history: '$encoder.jsEscape($i18n.getString( 'history' ) , "'")',
> -    api_key: '$encoder.jsEscape($i18n.getString( 'api_key' ) , "'")'
> +    api_key: '$encoder.jsEscape($i18n.getString( 'api_key' ) , "'")',
> +    measure_distance: '$encoder.jsEscape($i18n.getString(
> 'measure_distance' ) , "'")'
>  };
> \ No newline at end of file
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/css/style.css'
> ---
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/css/style.css
>     2011-05-16 15:25:26 +0000
> +++
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/css/style.css
>     2011-05-19 12:31:31 +0000
> @@ -68,6 +68,9 @@
>  .x-date-inner .x-date-today a {
>     border-color:#999999;
>  }
> +.x-border-layout-ct {
> +    background-color: #fcfcfc;
> +}
>
>  /* OpenLayers (include in lib) */
>  /*
> @@ -235,6 +238,9 @@
>  .x-btn .icon-labels {
>        background-image:url('../../../images/labels.png');
>  }
> +.x-btn .icon-measure {
> +       background-image:url('../../../images/measure.png');
> +}
>  .x-btn-noicon .x-btn-small .x-btn-text {
>     height:16px;
>     padding:0 5px;
> @@ -328,6 +334,12 @@
>        font:bold 11px arial;
>        color:#111;
>  }
> +#window-measure-title {
> +       padding:0 0 3px 21px;
> +       background:url('../../../images/measure.png') no-repeat 0 0
> transparent;
> +       font:bold 11px arial;
> +       color:#111;
> +}
>
>  /* Ext Panel */
>  .panel-title {
> @@ -436,3 +448,7 @@
>     -moz-border-radius-topright: 2px;
>     -webkit-border-top-right-radius: 2px;
>  }
> +#measureDistanceDiv {
> +    padding:0 0 0 5px;
> +    color:#222222;
> +}
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/javascript/global.js'
> ---
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/javascript/global.js
>      2011-04-12 17:22:06 +0000
> +++
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/javascript/global.js
>      2011-05-19 13:25:14 +0000
> @@ -85,7 +85,34 @@
>
>     defaultLayerOpacity: 0.8,
>
> -    defaultLayerZIndex: 10000
> +    defaultLayerZIndex: 10000,
> +
> +//  Measure
> +
> +    sketchSymbolizers: {
> +        "Point": {
> +            pointRadius: 4,
> +            graphicName: "square",
> +            fillColor: "white",
> +            fillOpacity: 1,
> +            strokeWidth: 1,
> +            strokeOpacity: 1,
> +            strokeColor: "#333333"
> +        },
> +        "Line": {
> +            strokeWidth: 2,
> +            strokeOpacity: 1,
> +            strokeColor: "#444444",
> +            strokeDashstyle: "dash"
> +        },
> +        "Polygon": {
> +            strokeWidth: 2,
> +            strokeOpacity: 1,
> +            strokeColor: "#666666",
> +            fillColor: "white",
> +            fillOpacity: 0.3
> +        }
> +    }
>  };
>
>  G.util = {
> @@ -161,7 +188,7 @@
>         return tmp.indexOf(dec_sep) > -1 ? tmp.length-tmp.indexOf(dec_sep)
> - 1 : 0;
>     },
>
> -    labels: {
> +    labels: {
>         getActivatedOpenLayersStyleMap: function(fsize, fweight, fstyle,
> fcolor) {
>             return new OpenLayers.StyleMap({
>                 'default' : new OpenLayers.Style(
> @@ -222,6 +249,20 @@
>             widget.applyValues();
>         }
>     },
> +
> +    measureDistance: {
> +        getMeasureStyleMap: function() {
> +            var style = new OpenLayers.Style();
> +            style.addRules([new OpenLayers.Rule({symbolizer:
> G.conf.sketchSymbolizers})]);
> +            return new OpenLayers.StyleMap({"default": style});
> +        },
> +
> +        handleMeasurements: function(e) {
> +            if (e.measure) {
> +                document.getElementById('measureDistanceDiv').innerHTML =
> e.measure.toFixed(2) + ' ' + e.units;
> +            }
> +        }
> +    },
>
>     sortByValue: function(a,b) {
>         return b.value-a.value;
>
> === modified file
> 'dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/javascript/index.js'
> ---
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/javascript/index.js
>       2011-05-19 08:48:09 +0000
> +++
> dhis-2/dhis-web/dhis-web-mapping/src/main/webapp/dhis-web-mapping/mapping/javascript/index.js
>       2011-05-19 13:25:14 +0000
> @@ -2496,7 +2496,7 @@
>                iconCls: 'icon-zoomout',
>                tooltip: G.i18n.zoom_out,
>         style: 'margin-top:1px',
> -               handler:function() {
> +               handler: function() {
>                        G.vars.map.zoomOut();
>                }
>        });
> @@ -2517,7 +2517,7 @@
>                 }
>             }
>         }
> -       });
> +       });
>
>     var viewHistoryButton = new Ext.Button({
>         id: 'viewhistory_b',
> @@ -2614,6 +2614,27 @@
>                }
>        });
>
> +       var predefinedMapLegendSetButton = new Ext.Button({
> +               iconCls: 'icon-predefinedlegendset',
> +               tooltip: G.i18n.predefined_legend_sets,
> +               disabled: !G.user.isAdmin,
> +        style: 'margin-top:1px',
> +               handler: function() {
> +                       if (!predefinedMapLegendSetWindow.hidden) {
> +                               predefinedMapLegendSetWindow.hide();
> +                       }
> +                       else {
> +                var x = Ext.getCmp('center').x + G.conf.window_position_x;
> +                var y = Ext.getCmp('center').y + G.conf.window_position_y;
> +                predefinedMapLegendSetWindow.setPosition(x,y);
> +                               predefinedMapLegendSetWindow.show();
> +                if (!G.stores.predefinedMapLegend.isLoaded) {
> +                    G.stores.predefinedMapLegend.load();
> +                }
> +                       }
> +               }
> +       });
> +
>        var exportImageButton = new Ext.Button({
>                iconCls: 'icon-image',
>                tooltip: G.i18n.export_map_as_image,
> @@ -2635,34 +2656,62 @@
>                        }
>                }
>        });
> -
> -       var predefinedMapLegendSetButton = new Ext.Button({
> -               iconCls: 'icon-predefinedlegendset',
> -               tooltip: G.i18n.predefined_legend_sets,
> -               disabled: !G.user.isAdmin,
> +
> +    var measureDistanceButton = new Ext.Button({
> +        iconCls: 'icon-measure',
> +        tooltip: G.i18n.measure_distance,
>         style: 'margin-top:1px',
> -               handler: function() {
> -                       if (!predefinedMapLegendSetWindow.hidden) {
> -                               predefinedMapLegendSetWindow.hide();
> -                       }
> -                       else {
> -                var x = Ext.getCmp('center').x + G.conf.window_position_x;
> -                var y = Ext.getCmp('center').y + G.conf.window_position_y;
> -                predefinedMapLegendSetWindow.setPosition(x,y);
> -                               predefinedMapLegendSetWindow.show();
> -                if (!G.stores.predefinedMapLegend.isLoaded) {
> -                    G.stores.predefinedMapLegend.load();
> +        handler: function() {
> +            var control = G.vars.map.getControl('measuredistance');
> +
> +            if (!control.active) {
> +                control.activate();
> +
> +                if (!control.window) {
> +                    control.window = new Ext.Window({
> +                        title: '<span id="window-measure-title">' +
> G.i18n.measure_distance + '</span>',
> +                        layout: 'fit',
> +                        closeAction: 'hide',
> +                        width: 150,
> +                        height: 90,
> +                        items: [
> +                            {
> +                                xtype: 'panel',
> +                                layout: 'anchor',
> +                                bodyStyle: 'padding:8px',
> +                                items: [
> +                                    {html: '<div class="window-info">Total
> distance</div>'},
> +                                    {html: '<div
> id="measureDistanceDiv"></div>'}
> +                                ]
> +                            }
> +                        ],
> +                        listeners: {
> +                            'hide': function() {
> +
>  G.vars.map.getControl('measuredistance').deactivate();
> +                            }
> +                        }
> +                    });
>                 }
> -                       }
> -               }
> -       });
> +                control.window.setPagePosition(Ext.getCmp('east').x -
> (control.window.width + 15 + 5), Ext.getCmp('center').y + 41);
> +                control.window.show();
> +                document.getElementById('measureDistanceDiv').innerHTML =
> '0 km';
> +                control.setImmediate(true);
> +                control.geodesic = true;
> +                control.activate();
> +            }
> +            else {
> +                control.deactivate();
> +                control.window.hide();
> +            }
> +        }
> +    });
>
>        var adminButton = new Ext.Button({
>                iconCls: 'icon-admin',
>                tooltip: 'Administrator settings',
>                disabled: !G.user.isAdmin,
>         style: 'margin-top:1px',
> -               handler: function() {
> +               handler: function() {
>             if (!adminWindow.hidden) {
>                 adminWindow.hide();
>             }
> @@ -2716,6 +2765,7 @@
>                        favoritesButton,
>             predefinedMapLegendSetButton,
>                        exportImageButton,
> +            measureDistanceButton,
>                        '-',
>             adminButton,
>                        helpButton,
> @@ -2873,5 +2923,18 @@
>         slideFactor: 100
>     }));
>
> +    G.vars.map.addControl(new OpenLayers.Control.Measure(
> OpenLayers.Handler.Path, {
> +        id: 'measuredistance',
> +        persist: true,
> +        handlerOptions: {
> +            layerOptions: {styleMap:
> G.util.measureDistance.getMeasureStyleMap()}
> +        }
> +    }));
> +
> +    G.vars.map.getControl('measuredistance').events.on({
> +        "measurepartial": G.util.measureDistance.handleMeasurements,
> +        "measure": G.util.measureDistance.handleMeasurements
> +    });
> +
>        }});
>  });
>
>
> _______________________________________________
> Mailing list: https://launchpad.net/~dhis2-devs
> Post to     : dhis2-devs@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~dhis2-devs
> More help   : https://help.launchpad.net/ListHelp
>
>

Attachment: measure.png
Description: PNG image


References