Я пытаюсь добавить кнопку на карту OpenLayers, которая должна вызывать функцию JS при нажатии. Мне удалось заставить его выглядеть так, как я хотел бы, но функция триггера не работает.
Если у меня присутствует Control.Navigation, нажатие на кнопку, кажется, запускает событие перетаскивания, и я могу перетащить карту, нажав даже на эту кнопку. Но даже если я удалю все остальные элементы управления, обработчик триггера кнопки не будет вызван.
Я также попытался добавить параметр «autoActivate» (который по какой-то причине не делает элемент управления автоматически активным), я попытался вызвать функцию активации () для кнопки после того, как я ее добавил, что, похоже, переключает "активное" свойство элемента управления, но оно по-прежнему не реагирует на щелчки.
Может кто-нибудь указать мне правильное направление, пожалуйста, или опубликовать рабочий пример? Мой нерабочий пример ниже.
Спасибо, Янис
<html>
<head>
<title>OpenLayers.Control.Button</title>
<style text="text/css">
.olControlButton {
position: absolute;
top: 0;
right: 0;
background: red;
width: 22px;
height: 22px;
}
</style>
<script type="text/javascript" src="http://openlayers.org/api/OpenLayers.js"></script>
<script type="text/javascript">
var map;
var panel;
function buttonClicked()
{
alert ('Button clicked.');
}
function init()
{
map = new OpenLayers.Map ('map', {controls: [/*new OpenLayers.Control.Navigation()*/]});
map.addLayer (new OpenLayers.Layer.WMS ("OpenLayers WMS", "http://vmap0.tiles.osgeo.org/wms/vmap0", {layers: 'basic'}));
map.zoomToMaxExtent();
panel = new OpenLayers.Control.Panel();
map.addControl (panel);
panel.addControls ([new OpenLayers.Control.Button ({autoActivate: true, displayClass: 'olControlButton', trigger: buttonClicked, title: 'Button is to be clicked'})]);
//panel.controls[0].activate(); <-- this does not help.
}
</script>
</head>
<body onload="init()">
<div id="map" style="border: 2px solid black; height: 500px"></div>
</body>
</html>