Как удалить попап, когда мышь покидает область точки?

Mapserver, GeoServer, MapGuide, Google и другое ПО для веб-картографии
Ответить
Аватара пользователя
dakotta
Новоприбывший
Сообщения: 12
Зарегистрирован: 04 апр 2013, 12:22
Репутация: 0
Откуда: Томск
Контактная информация:

Как удалить попап, когда мышь покидает область точки?

Сообщение dakotta » 10 апр 2013, 14:53

Здравствуйте!
У меня есть shape-файл в котором содержатся точечные объекты (зимовки). Также в dbf файле содержатся их названия:

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

OBJECTID  Name_ru
1               Зимовка 1
2               Зимовка 2
и т.д.
Я использую OpenLayers и MapServer в качестве WMS-сервиса.
Слой с зимовками описан в map-файле вот так:

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

LAYER
    NAME "wintering"
    METADATA
      "wms_title"         "Зимовки"
      "gml_include_items" "all"
      "wms_enable_request" "*"
      "wms_extent"         "667190.161507 5580041.069265 719229.643505 5623106.149870"
    END
    TYPE         POINT
    DATA          "wintering"
	LABELITEM    "Name_ru"  
    CLASS
        STYLE
            COLOR 255 128 0
			SIZE   10
			SYMBOL 'star'
        END
    END
Зимовки отображаются на карте символами без проблем (при подключении wms просто добавляю layers: "еще_какие-то_слои, wintering"), но нужно, чтобы при наведении мыши на каждую зимовку всплывало ее название.

Подскажите, пожалуйста, могу ли я каким-нибудь образом сделать так, чтобы wms-сервис отдавал мне эти названия, но не выводил на карту сразу, чтобы я могла их выводить на события мыши?

Заранее спасибо.
Последний раз редактировалось dakotta 15 апр 2013, 05:44, всего редактировалось 4 раза.


Аватара пользователя
dakotta
Новоприбывший
Сообщения: 12
Зарегистрирован: 04 апр 2013, 12:22
Репутация: 0
Откуда: Томск
Контактная информация:

Re: Как вывести Label в OpenLayers из MapServer

Сообщение dakotta » 10 апр 2013, 19:09

Спасибо, то что нужно!

Аватара пользователя
dakotta
Новоприбывший
Сообщения: 12
Зарегистрирован: 04 апр 2013, 12:22
Репутация: 0
Откуда: Томск
Контактная информация:

Re: Как вывести Label в OpenLayers из MapServer

Сообщение dakotta » 12 апр 2013, 12:18

Вывожу названия зимовок на событие hover:

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

   var hover_ctrl = new OpenLayers.Control.WMSGetFeatureInfo({
                    url: "http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/wms/wms.map&",
                    layers: [wintering],
                    queryVisible: true,
                    infoFormat: 'application/vnd.ogc.gml',
                    maxFeatures: 50,
                    autoActivate: true,
                    hover: true,
                    //cursor: pointer ????????????????????????
                    vendorParams: {
                        radius: 10
                    },
                    eventListeners: {
                        getfeatureinfo: function(event) {
                            console.log(event.text);
                            console.log(event.features.length);
                            if (event.features.length!=0) {
                                map.addPopup(new OpenLayers.Popup.FramedCloud(
                                "wintering", 
                                map.getLonLatFromPixel(event.xy),
                                null,
                                [event.features[0].data.Name_en],
                                null,
                                true
                            )); 
                            }
                        }
                    }
                });
 
                map.addControl(hover_ctrl);
                hover_ctrl.activate();
Работает, но нужно, чтобы попапы скрывались, когда мышь покидает область зимовки. Подскажите, пожалуйста, как это сделать? Еще хочу, чтобы при наведении на зимовку менялся курсор. Пишу {cursor:pointer}, но это не работает. Помогите, пожалуйста!

Аватара пользователя
dakotta
Новоприбывший
Сообщения: 12
Зарегистрирован: 04 апр 2013, 12:22
Репутация: 0
Откуда: Томск
Контактная информация:

Re: Как удалить попап, когда мышь покидает область точки?

Сообщение dakotta » 15 апр 2013, 05:41

Проблема с попапами решилась так:

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

var hover_ctrl = new OpenLayers.Control.WMSGetFeatureInfo({
                    url: "http://localhost/cgi-bin/mapserv.exe?map=d:/ms4w/apps/wms/wms.map&",
                    layers: [wintering],
                    queryVisible: true,
                    infoFormat: 'application/vnd.ogc.gml',
                    maxFeatures: 50,
                    autoActivate: true,
                    hover: true,
                    vendorParams: {
                        radius: 10
                    },
                    eventListeners: {
                        getfeatureinfo: function(event) {
                            if (event.features.length!=0) {
                             //удаляем попапы
                             while (map.popups.length > 0) { 
                                    map.removePopup(map.popups[0]);
                                }
                                map.addPopup(new OpenLayers.Popup.FramedCloud(
                                "wintering", 
                                map.getLonLatFromPixel(event.xy),
                                null,
                                [event.features[0].data.Name_en],
                                null,
                                true
                            )); 
                            }
                        }
                    }
                });

                map.addControl(hover_ctrl);
                hover_ctrl.activate();

Ответить

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

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

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