Страница 1 из 1

Не создается popup

Добавлено: 26 апр 2011, 14:52
iskander
Господа и дамы, прошу помощи!
Есть код:

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

	switch( bounds[i].Type )
	{
		case "Point":
			var size = new OpenLayers.Size(20,20);
			var offset = new OpenLayers.Pixel(-(size.w/2), -size.h);
			var icon = new OpenLayers.Icon('http://domain.ru/images/marker_map_red.png', size, offset);

			var ll = new OpenLayers.LonLat( bounds[ i ].Bounds[ 0 ].x , bounds[ i ].Bounds[ 0 ].y );
			var feature = new OpenLayers.Feature(markers, ll);
				feature.closeBox = false;
				feature.popupClass = OpenLayers.Class(OpenLayers.Popup.AnchoredBubble, {'autoSize':true,'minSize': new OpenLayers.Size(70, 20) } );
				feature.data.popupContentHTML = '<?=$line['name_firm']?>';
				feature.data.overflow = "hidden";

			//feature.popup = feature.createPopup(this.closeBox);
			//map.addPopup( feature.popup );

			var marker = new OpenLayers.Marker(ll, 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 );

		map.setCenter(new OpenLayers.LonLat( bounds[ i ].Bounds[ 0 ].x, bounds[ i ].Bounds[ 0 ].y ), 16);
	break;
	}
Всё хорошо, всё работает пока не раскоментить код:

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

//feature.popup = feature.createPopup(this.closeBox);
//map.addPopup( feature.popup );
тогда начинает ругаться на проперть left которого не существует.

А нужно мне - чтобы созданный popup показывался сразу, а не после клика.
Хелп ми плиз :)

Re: Не создается popup

Добавлено: 06 сен 2011, 08:04
Amayak
Здравствуйте! Я тоже аналогичным кодом создаю Маркеры с Popup.
Подскажите как при клике на следующий Маркер убрать предыдущие Popup-ы.

Re: Не создается popup

Добавлено: 07 сен 2011, 09:55
kosyag
Кусок моего (рабочего) кода:

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

var pop=new OpenLayers.Popup.FramedCloud(
				"cloud", 
				map.getLonLatFromPixel(e.xy),
				null,
				out,
				null,
				true);
map.addPopup(pop);
Очевидно, что если вместо координат события e.xy поставить любые другие (валидные) координаты, то попап появится там.