自定义OpenLayers控件

时间:2009-11-01 20:25:55

标签: javascript maps geocoding openlayers

如何轻松自定义OpenLayers地图控件?或者至少,我如何最小化控件的高度?

谢谢。

PS。有没有CSS覆盖?

5 个答案:

答案 0 :(得分:5)

您可以对任何openLayers控件进行子类化。我只是通过对PanZoomBar(panZoomBar.js)进行子类化来制作一个'缩放滑块',重写draw()方法并注释掉所有按钮元素,只需离开缩放滑块..就像这样:

function zoomSlider(options) {

    this.control = new OpenLayers.Control.PanZoomBar(options);

    OpenLayers.Util.extend(this.control,{
        draw: function(px) {
            // initialize our internal div
            OpenLayers.Control.prototype.draw.apply(this, arguments);
            px = this.position.clone();

            // place the controls
            this.buttons = [];

            var sz = new OpenLayers.Size(18,18);
            var centered = new OpenLayers.Pixel(px.x+sz.w/2, px.y);

            this._addButton("zoomin", "zoom-plus-mini.png", centered.add(0, 5), sz);
            centered = this._addZoomBar(centered.add(0, sz.h + 5));
            this._addButton("zoomout", "zoom-minus-mini.png", centered, sz);
            return this.div;
        }
    });
    return this.control;
}

var panel = new OpenLayers.Control.Panel();
panel.addControls([
    new zoomSlider({zoomStopHeight:11}),
    new OpenLayers.Control.LayerSwitcher({'ascending':false}),
]);
map.addControl(panel);

答案 1 :(得分:1)

随附的CSS文件可以控制openlayers中的所有CSS命令.olZoombar {here} 这可能是编辑这些内容的最简单方法,否则您可以编辑控件的实际.js文件。

答案 2 :(得分:1)

如果您正在谈论PanZoomBar或ZoomBar,如上所述,您需要编辑zoomStopHeight。但是,您无需编辑OpenLayers.js。

new OpenLayers.Control.PanZoomBar({zoomStopHeight: 7})

你可以考虑尝试没有吧的PanZoom。

答案 3 :(得分:0)

最小化ZoomBar在OpenLayers.js中搜索zoomStopHeight并根据需要进行编辑。

进一步参考:Link

答案 4 :(得分:-4)

看看这里 - http://geojavaflex.blogspot.com/ 我正在展示如何对LayerSwitcher进行相关的自定义。这可能会为您提供有关如何做到的事情的想法。

页面上有一个地图,显示控件的工作原理,后续帖子将详细讨论代码。

如果您只对代码感兴趣,请查看该页面的来源,并查找CustomLayerSwitcher.js链接以获取切换台的自定义版本。