Клик по Маркеру в OL
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Клик по Маркеру в OL
Делаю маркеры как в примере
Как сделать реакцию на клик по нему?..вывод попапа с текстом например...
Как сделать реакцию на клик по нему?..вывод попапа с текстом например...
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Клик по Маркеру в OL
Код: Выделить всё
marker.events.register("onclick",marker,function(){})
Spatial is now, more than ever, just another column- The Geometry Column.
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: Клик по Маркеру в OL
Спасибо, _DR_. Но функция будет выполняться при клике на любом маркере, а у меня их много, как идентифировать именно тот маркер по которому я кликнул?
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Клик по Маркеру в OL
С помощью this, пример из документации:
Код: Выделить всё
marker.events.register('mousedown', marker, function(evt) { alert(this.icon.url); OpenLayers.Event.stop(evt); });
Spatial is now, more than ever, just another column- The Geometry Column.
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: Клик по Маркеру в OL
Я так понимаю выдет сообщение выводящее путь к иконки...у меня из базы берутся сотни маркеров с одним и тем же изображением, и при клике на маркере необходимо вывести инфу описывающую маркер. Можно ли както при создании маркера прописать ему определенный идентификатор (ссылку на запись в БД), чтоб при клике достать этот идентификатор и по нему уже отбирать записи?
Код: Выделить всё
markers.addMarker(new OpenLayers.Marker(new OpenLayers.LonLat(0,0),icon));
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Клик по Маркеру в OL
Я сам с маркерами не работал, поэтому сразу не подскажу, надо посмотреть. А почемувы остановились именно на маркерах, а не на точечном векторном слое? Насколько мне извстно - маркеры - это из прошлого OL, когда в браузрах были проблемы с рендерингом векторных фич. Несколько раз встречал указания на то, что лучше использовать как раз точечные объекты. Если хотите, чтобы точка отображалась в виде какой-нибудь ионки, то просто укажите в настройке стиля параметр externalGraphic.
В данном примере feature - объект, на который кликнули, currPos - место клика.
Код: Выделить всё
popupfield = feature.attributes['NAME'];
popup = new OpenLayers.Popup.AnchoredBubble("popupid",
feature.layer.getLonLatFromViewPortPx(currPos),
null,
popupfield,
null
);
map.addPopup(popup);
Spatial is now, more than ever, just another column- The Geometry Column.
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: Клик по Маркеру в OL
Экспериментировал с маркерами сегодня и никак неполучилось вывести ни одно из его свойств...
не работает...
попробовал вывести хотя бы имя объекта
выдает имя "marker"
хотел добраться до координат маркера по которому кликнул но также браузер входит сообщение "undefined"...
Все же хочется понять как работать с маркерами
Хочется оставить именно маркеры на карте, т.к. уже все сделано, настроен вывод маркеров из базы и т.д.
Код: Выделить всё
marker.events.register('mousedown', marker, function(evt) { alert(this.icon.url); OpenLayers.Event.stop(evt); });
попробовал вывести хотя бы имя объекта
Код: Выделить всё
mark.events.register('mousedown', mark, function(evt) { alert(this.name); OpenLayers.Event.stop(evt); });

хотел добраться до координат маркера по которому кликнул
Код: Выделить всё
alert(this.lonlat);
Все же хочется понять как работать с маркерами

Хочется оставить именно маркеры на карте, т.к. уже все сделано, настроен вывод маркеров из базы и т.д.
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Клик по Маркеру в OL
Код: Выделить всё
function setMarker(lon, lat, count){
var lonLatMarker = new OpenLayers.LonLat(lon, lat).transform(map.displayProjection, map.projection);;
var feature = new OpenLayers.Feature(markers, lonLatMarker);
feature.closeBox = true;
feature.popupClass = OpenLayers.Class(OpenLayers.Popup.AnchoredBubble, {minSize: new OpenLayers.Size(300, 180) } );
feature.data.popupContentHTML = 'Hello World';
feature.data.overflow = "hidden";
var icon = new OpenLayers.Icon("/src/includes/lib/map/export_badge.php?number="+count);
var marker = new OpenLayers.Marker(lonLatMarker, icon);
marker.feature = feature;
var markerClick = function(evt) {
if (this.popup == null) {
this.popup = this.createPopup(this.closeBox);
map.addPopup(this.popup);
this.popup.show();
} else {
this.popup.toggle();
}
OpenLayers.Event.stop(evt);
};
marker.events.register("mousedown", feature, markerClick);
markers.addMarker(marker);
}
Просто добавьте в функцию setMarker дополнительный параметр и передавайте его в feature.data.popupContentHTML.
Spatial is now, more than ever, just another column- The Geometry Column.
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: Клик по Маркеру в OL
То, что _DR_ прописал! Спасибо, это мне и нужно было, все работает, круть))) Можно в рецепты было бы наверно оформить....
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
Re: Клик по Маркеру в OL
А как сделать, чтоб курсор при наведении на маркер менялся на указательный палец?
- Denis Rykov
- Гуру
- Сообщения: 3376
- Зарегистрирован: 11 апр 2008, 21:09
- Репутация: 529
- Ваше звание: Author
- Контактная информация:
Re: Клик по Маркеру в OL
Как вариант - к приаттаченной к маркеру фичи в свойствах стиля установить
Код: Выделить всё
{cursor: pointer}
Spatial is now, more than ever, just another column- The Geometry Column.
- dobeer
- Активный участник
- Сообщения: 199
- Зарегистрирован: 25 дек 2009, 21:54
- Репутация: 1
- Откуда: Чита
- Контактная информация:
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 11 ноя 2010, 07:39
- Репутация: 0
Re: Клик по Маркеру в OL
Спасибо за примеры. Это работает! Подскажите как сделать чтобы popup маркер закрывался при клике на другой маркер. Спасибо.
-
- Новоприбывший
- Сообщения: 8
- Зарегистрирован: 11 ноя 2010, 07:39
- Репутация: 0
Re: Клик по Маркеру в OL
Вопрос закрыт.
Вместо
map.addPopup(this.popup);
надо
map.addPopup(this.popup,true);
Вместо
map.addPopup(this.popup);
надо
map.addPopup(this.popup,true);
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 2 гостя