Выбор цвета лини OpenLayers.Handler.Path

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
oleg81
Новоприбывший
Сообщения: 2
Зарегистрирован: 06 окт 2011, 11:37
Репутация: 0

Выбор цвета лини OpenLayers.Handler.Path

Сообщение oleg81 » 06 окт 2011, 12:45

Добрый день, существует проблема. Хочу сделать возможность выбирать цвет линии которой рисую. Но не как не удается применить стиль к объекту.
Вот код скрипта, удалил все что не касается (заменил на ...........)

Код: Выделить всё

App.control.mapPanel = Ext.extend(GeoExt.MapPanel, {
	...........
	strokeColor: '#3366FF',
	strokeOpacity: 1,
	strokeWidth: '2',
	cursor: 'pointer',
    fillColor: '#99CCFF',
	fillOpacity: 0.50,
    pointRadius: '5',
	...........
	getStyle: function(){
		var style = [];
		style['strokeColor'] = this.strokeColor;
		style['strokeOpacity'] = this.strokeOpacity;
		style['strokeWidth'] = this.strokeWidth;
		style['cursor'] = this.cursor;
		style['fillColor'] = this.fillColor;
		style['fillOpacity'] = this.fillOpacity;
		style['pointRadius'] = this.pointRadius;
		return style;
	},
	setStyle: function(style) {
        var defStyle = {
			strokeColor : style['strokeColor'],
			strokeOpacity : style['strokeOpacity'],
			strokeWidth : style['strokeWidth'],
			cursor : style['cursor'],
			fillColor : style['fillColor'],
			fillOpacity: style['fillOpacity'],
			pointRadius: style['pointRadius']
		};
		alert("SET STYLE: "+style['strokeColor']);
        var sty = OpenLayers.Util.applyDefaults(defStyle, OpenLayers.Feature.Vector.style["default"]);
        var sm = new OpenLayers.StyleMap({
            'default': sty,
            'select': {
				strokeColor: "red",
				fillColor: "red"
			}
        });		
		return sm;
	},
    buildMap: function(){
		..........
        var polygon_layer = new OpenLayers.Layer.Vector("polygon", {
            styleMap: this.setStyle(this.getStyle())
        });      
        var center_layer = new OpenLayers.Layer.Vector("center", {
            styleMap: this.setStyle(this.getStyle())
        });
        map.addLayers([center_layer, polygon_layer]);
		....................
    },
	buildToolbar: function(){
		....................
		function style() {
			var mapEditor = Ext.getCmp('app-mappanel');
			alert("GET STYLE: "+mapEditor.getStyle().strokeColor);
			return mapEditor.getStyle();
		}
		.....................
		action = new GeoExt.Action({
			text: '',
            iconCls: 'icon-draw-path',
			control: new OpenLayers.Control.DrawFeature(polygon_layer, OpenLayers.Handler.Path, {
				featureAdded: function() {
					var mapEditor = Ext.getCmp('app-mappanel');
					mapEditor.setStyle(style());
				},
				handlerOptions:{
					style: {
						strokeColor: style().strokeColor,
						strokeWidth: style().strokeWidth,
						cursor: style().cursor,
						fillColor: style().fillColor,
						fillOpacity: style().fillOpacity,
						pointRadius: style().pointRadius
					}
				}
			}),
			map: map,
			toggleGroup: "draw",
			allowDepress: false,
			tooltip: "Нарисовать линию",
			group: "draw"
		});
		actions["draw_line"] = action;
		toolbarItems.push(action);

		toolbarItems.push({
			text: 'Настройка',
			menu: new Ext.menu.Menu({
				items: [
					{
						text: 'Линия',
						menu: {
							items: [
								{
									text: 'Изменить цвет',
									menu: new Ext.menu.ColorMenu({
										handler: function(cm, color){
											var mapEditor = Ext.getCmp('app-mappanel');
											var style = mapEditor.getStyle();
											style['strokeColor'] = color;
											mapEditor.setStyle(style);
										}
									})
								},{
		.............
					}
				]
			})
		});        
        
        
        return toolbarItems;
    },
    initComponent: function(){
	...........
подскажите в какую строну копать? как можно динамически менять цвет, размер линии?

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Выбор цвета лини OpenLayers.Handler.Path

Сообщение Denis Rykov » 07 окт 2011, 06:54

Вот набросал небольшой примерчик, реализующий изменение свойств стиля векторного объекта: http://jsfiddle.net/_DR_/Udd4e/. Если будут вопросы - спрашивайте.
Spatial is now, more than ever, just another column- The Geometry Column.

oleg81
Новоприбывший
Сообщения: 2
Зарегистрирован: 06 окт 2011, 11:37
Репутация: 0

Re: Выбор цвета лини OpenLayers.Handler.Path

Сообщение oleg81 » 07 окт 2011, 10:26

спасибо, похоже то что нужно, только немного подправил код
на ...
map.layers[1].styleMap.styles['default'].defaultStyle.fillColor
...
так как ругалось на отсутствующий "default"

Ответить

Вернуться в «Веб-картография»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 3 гостя