Итак, мне надоело постоянно видеть ярко-оранжевые стандартные полигоны, и я пытаюсь научиться стилизовать OpenLayers.
У меня был некоторый успех с:
var layer_style = OpenLayers.Util.extend({},OpenLayers.Feature.Vector.style['default']);
layer_style.fillColor = "#000000";
layer_style.strokeColor = "#000000";
polygonLayer = new OpenLayers.Layer.Vector("PolygonLayer");
polygonLayer.style = layer_style;
Но так как я рисую свои полигоны с помощью DrawFeature, мой стиль вступает в силу только после того, как я закончу рисовать, и видеть, как он переходит от ярко-оранжевого к серому, немного неприятно. Итак, я узнал о временных стилях и попробовал:
var layer_style = new OpenLayers.Style({"default": {fillColor: "#000000"}, "temporary": {fillColor: "#000000"}})
polygonLayer = new OpenLayers.Layer.Vector("PolygonLayer");
polygonLayer.style = layer_style;
Это заставило меня по-прежнему оставаться оранжевым квадратом - пока я не прекратил рисовать, когда он стал совершенно непрозрачным черным. Я подумал, может быть, мне нужно было явно установить fillOpacity ... без кости. Даже когда я изменил оба цвета заливки на розовый и синий соответственно, я все еще видел только оранжевый и непрозрачный черный.
Я пытался связываться с StyleMaps, так как я читал, что если вы добавляете только один стиль в карту стилей, он использует стиль по умолчанию для всего, включая временный стиль.
var layer_style = OpenLayers.Util.extend({}, OpenLayers.Feature.Vector.style['default']);
var style_map = new OpenLayers.StyleMap(layer_style);
polygonLayer = new OpenLayers.Layer.Vector("PolygonLayer");
polygonLayer.style = style_map;
Это также дало мне черный непрозрачный квадрат. (Даже если этот стиль слоя работает, когда он не указан на карте). Передача карты самому слою выглядит так:
polygonLayer = new OpenLayers.Layer.Vector("PolygonLayer", style_map);
Ничего мне не досталось. Оранжевый полностью, даже после рисования.
polygonLayer = new OpenLayers.Layer.Vector("PolygonLayer", {styleMap: style_map});
Намного более удачно: оранжевый при рисовании, полупрозрачный черный с черным контуром при рисовании. Так же, как когда я не использовал карту. Проблема в том, что все еще нет временного ...
Итак, я попытался инициализировать мою карту следующим образом:
var style_map = new OpenLayers.StyleMap({"default": layer_style, "temporary": layer_style});
Нет непрозрачного квадрата, но и кубика для временного тоже нет ... Все еще оранжевый, щелкая черным прозрачным. Даже если я создаю новый стиль (layer_style2) и устанавливаю временный для этого, все равно не повезло. И не повезло с настройкой стиля «выбор», либо.
Что я делаю не так? Временный IS для моделирования вещей, которые в настоящее время набрасываются, правильно? Есть ли какой-то другой способ для контроллера drawFeature?
Редактировать: установка в значение extensionDefault значения true тоже не помогает ...
var style_map = new OpenLayers.StyleMap({"default": layer_style, "temporary": layer_style}, {"extendDefault": "true"});