Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript OpenLayers矢量样式更改问题_Javascript_Jquery_Css_Openlayers_Geoserver - Fatal编程技术网

Javascript OpenLayers矢量样式更改问题

Javascript OpenLayers矢量样式更改问题,javascript,jquery,css,openlayers,geoserver,Javascript,Jquery,Css,Openlayers,Geoserver,当我点击地图上的按钮时,我想改变矢量样式(fillColor)。我试过了,但运气不好 var map; var layer, wms; function init() { map = new OpenLayers.Map('map'); wms = new OpenLayers.Layer.WMS( "OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0", { layers: 'bas

当我点击地图上的按钮时,我想改变矢量样式(fillColor)。我试过了,但运气不好

var map;
var layer, wms;

function init() {
    map = new OpenLayers.Map('map');
    wms = new OpenLayers.Layer.WMS(
        "OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0", {
        layers: 'basic'
    });
    var myStyle = {
        fill: true,
        fillColor: "#ff0000"
    };
    layer = new OpenLayers.Layer.Vector("WFS", {
        style: myStyle,
        strategies: [new OpenLayers.Strategy.BBOX()],
        protocol: new OpenLayers.Protocol.WFS({
            url: "http://demo.opengeo.org/geoserver/wfs",
            featureType: "tasmania_roads",
            featureNS: "http://www.openplans.org/topp"
        })
    });

    map.addLayers([wms, layer]);
    map.setCenter(new OpenLayers.LonLat(146.7, -41.8), 6);

        var panel_type2 = new OpenLayers.Control.Panel({
        displayClass: 'Panel2'
    });
    map.addControl(panel_type2);

    var redraw = new OpenLayers.Control.Button({
        displayClass: 'first',
        trigger: function () {
            layer.destroyFeatures();
            map.removeLayer(layer);
            var myStyle = {
                fill: true,
                fillColor: "#DFDFFF"
            };
            layer = new OpenLayers.Layer.Vector("WFS", {
                style: myStyle,
                strategies: [new OpenLayers.Strategy.BBOX()],
                protocol: new OpenLayers.Protocol.WFS({
                    url: "http://demo.opengeo.org/geoserver/wfs",
                    featureType: "tasmania_roads",
                    featureNS: "http://www.openplans.org/topp"
                })
            });

            map.addLayers([layer]);
        }
    });
    panel_type2.addControls([redraw]);
}

当我点击按钮时,我试图用新的样式重新绘制矢量层。但它不起作用。有人能告诉我为什么它不改变颜色,我怎么能改变


如蒙帮助,将不胜感激。:)

您的问题是wfs请求返回的只是直线,没有多边形,因此您的fillStyle将被忽略,因为没有可应用的对象。我已经更新了你的小提琴,并在你的样式图中添加了strokeColor属性,现在它可以正常工作了:

var myStyle1 = {
      fill: true,
      fillColor: "#DFDFFF",
      strokeColor: "#FF0000"
};

啊。太棒了,兄弟。没有注意到strokeColor。谢谢+不客气,兄弟。有时候第二双眼睛真的很有帮助。你能加入这个聊天室吗。我对地图API没有什么疑问。如果你能帮我整理一下,那对我真的很有帮助。