2013-03-20 2 views
3

Я очень, очень новичок в веб-картографии. У меня есть карта OpenLayers, сделанная из файла формы из базы данных PostGis, имеет векторный слой и имеет стиль по умолчанию (GeoServer SLD), но я хочу изменить стиль векторного слоя, когда пользователь нажимает кнопку обновления. Я искал в Интернете, и я не нашел простых и ясных примеров для этого. Кто-нибудь, пожалуйста, помогите мне, или, возможно, кому-то, кто хотел сделать то же самое, и нашел для этого простой учебник? Любая помощь сильно аппроксимируется.Как изменить стиль OpenLayers?

<script type="text/javascript"> 
    var map; 
    function init() { 
    var bounds = new OpenLayers.Bounds(
     68.089442, 6.752729, 
     97.407576, 37.072537); 

    var options = { 
      controls: [ new OpenLayers.Control.Navigation(), 
      new OpenLayers.Control.PanZoom() 
     ], 

     maxExtent: bounds, 
     maxResolution: 0.11843675, 
     projection: "EPSG:4326", 
     units: 'degrees' 
    }; 


    map = new OpenLayers.Map ("map", options); 

    var india = new OpenLayers.Layer.WMS(
     "cite:india_state - Tiled", 
     "http://localhost:8080/geoserver/cite/wms", 
     {LAYERS: 'cite:india_state',STYLES: 'style', 
     //format: format, 
     tiled: true, 
     tilesOrigin: map.maxExtent.left + ',' + map.maxExtent.bottom 
     }, 
     {buffer: 0, displayOutsideMaxExtent: true, 
     isBaseLayer: true, 
     yx: {'EPSG:4326' : true} 
     } 
    ); 

    var style = new OpenLayers.Style(); 
    //rule used for all polygons 
    var rule_fsa = new OpenLayers.Rule({ 
     symbolizer: { 
      fillColor: "#ff9a9a", 
      fillOpacity: 0.5, 
      strokeColor: "#000000", 
      strokeWidth: 1, 
      strokeDashstyle: "dash", 
      label: "${name}", 
      labelAlign: "cc", 
      fontColor: "#333333", 
      fontOpacity: 0.9, 
      fontFamily: "Arial", 
      fontSize: 14 
     } 
    }); 

    var rule_highlight = new OpenLayers.Rule({ 
     filter: new OpenLayers.Filter.Comparison({ 
      type: OpenLayers.Filter.Comparison.EQUAL_TO, 
      property: "classification", 
      value: "1", 
     }), 

     symbolizer: { 
      fillColor: "#FF7144", 
      fillOpacity: 0.6, 
      strokeColor: "#FF0000", 
      strokeWidth: 2, 
      strokeDashstyle: "solid", 
      label: " ${name}", 
      labelAlign: "cc", 
      fontColor: "#000000", 
      fontOpacity: 1, 
      fontFamily: "Arial", 
      fontSize: 16, 
      fontWeight: "600" 
     } 
    }); 

    style.addRules([rule_fsa, rule_highlight]); 

    var polygon = new OpenLayers.Layer.Vector("Polygon", { 
     Style: 'style', 
     rendererOptions: {zIndexing: true} 
    }); 

    map.addLayers([india,polygon]); 

    map.zoomToMaxExtent(); 
} 
</script> 

ответ

1

векторный слой может иметь StyleMap связанный, которые могут определить, как ваши особенности проявляются на разных намерений: по умолчанию Stlye, когда выбрана функция, при редактировании и т.д.

Посмотрите к образцам по адресу: http://acanimal.github.io/Openlayers-Cookbook/ См. главу 7 «Воспроизведение с помощью StyleMap» и код намерения рендеринга. Этот код создает пустой векторный слой, где вы можете добавлять функции и переопределять значение по умолчанию и выбирать намерения.

Также рекомендую вам OpenLayers Cookbook http://www.packtpub.com/openlayers-create-gis-web-applications-cookbook/book

Приветствия.