Код: Выделить всё
(function() {
    
var map = new OpenLayers.Map('map');
var base_layer = new OpenLayers.Layer.OSM();
var measure_nodes = new OpenLayers.Layer.Vector();
var measure_config = {
    'nodes_symbolizer': {
        pointRadius: 4,
        fillOpacity: 1,
        strokeWidth: 1,
        strokeOpacity: 1,
        fillColor: "white",
        graphicName: "square",
        strokeColor: "#333333",
        label: "${measure}",
        labelYOffset: 20,
        labelOutlineColor: "white",
        labelOutlineWidth: 3
    },
    'path_symbolizer': {
        strokeWidth: 3,
        strokeOpacity: 1,
        strokeColor: "#666666",
        strokeDashstyle: "dash"
    }
};
measure_nodes.styleMap = new OpenLayers.StyleMap(measure_config.nodes_symbolizer);
    
var measure_control = new OpenLayers.Control.Measure(
    OpenLayers.Handler.Path,
    {
        geodesic: true,
        callbacks: {
            'create': function() {
                measure_nodes.removeAllFeatures();
            },
            'point': function(p,l) {
                var node = new OpenLayers.Feature.Vector(p.clone());
                node.attributes.measure = measure_control.getLength(l, 'km').toFixed(0);
                measure_nodes.addFeatures([node]);
            }
        },
        handlerOptions: {
            layerOptions: {
                styleMap: new OpenLayers.StyleMap(measure_config.path_symbolizer)
            }
        }
    }
);
map.addLayers([base_layer, measure_nodes]);
map.addControl(measure_control);
measure_control.activate();
map.zoomToMaxExtent();
})()DEMO
Еще пример реализации: http://www.chamaps.com/watervliet/
