Карта, которую я создаю с помощью OpenLayers 3, имеет несколько кнопок, которые могут быть доступны или недоступны в зависимости от некоторых других вещей. Поэтому я хочу сохранить скрытые скрытые кнопки, а другие будут использовать их пространство. Доступные параметры могут меняться, поэтому иногда кнопка становится видимой.Относительное позиционирование пользовательских элементов управления с помощью OpenLayers 3
Есть несколько руководств по созданию custom controls with OpenLayers 3. Проблема в том, что все образцы, которые я видел, используют абсолютное позиционирование для элементов управления. Нужно знать, сколько элементов управления будет видно, и жестко закодировать координаты в CSS. Или измените координаты с помощью Javascript. Т.е., по ссылке выше:
.rotate-north {
top: 65px;
left: .5em;
}
Я попытался просто заходящего элемент с позиции: относительная, но затем они появляются ниже карты, так как элементы управления добавляются на страницу после карты. Таким образом, можно использовать относительное позиционирование с отрицательными координатами, но тогда, если карта изменит размер, вам придется переписать координаты в Javascript.
.ol-control.left-top {
position: relative;
top: -400px; /*map height*/
}
Есть ли способ элегантно внедрить ориентированные пользовательские элементы управления с OpenLayers 3, в идеале только с CSS?
Я предполагаю, что я пытаюсь получить подобную функциональность, как и в Google Maps API:
map.controls[google.maps.ControlPosition.LEFT_TOP].push(controlDiv);
Это неясное об условиях, но, может быть, вы могли бы использовать CSS 'calc'. –
Thanks; это разумная идея проверить. Однако обратите внимание, что этот calc может использовать относительные значения только для родительского элемента, а не для другого элемента. Я проверю позже, если это применимо к элементам управления OpenLayers 3. В любом случае всегда можно использовать меры, связанные с видовым экраном (vw/vh). Другая проблема с calc и vh заключается в том, что они не поддерживаются Android до версии 4.4, которая в настоящее время является для меня нарушителем транзакций. –