gmap 3

Hi all,

I’ve started to adapt the google map addon from maps v2 to maps v3, taking as a basis what has already done by Henri Muurimaa.

I start having some results, but when I want to add a sophisticated VerticalLayout in an info window, the size of the info is ok but the content is invisible.

my infonwindow is a vertical layout of size 300x300, containing 2 labels, hello workd 1 and hello world 2

I’ve inspect the generated html in the info window I have

hello, world 0
hello, world 1

While the same verticallayout added to the top ‘normal’ vaadin window gives

hello, world 0
hello, world 1

So there is apparently a problem in the height and width of the div tags surrounding the Labels but cannot spot out how to change that.

I am more than hapy to share the code and give it as an addon once there is something up and running.
Any suggestions are welcome.

Regards,
Victor[b]

[/b]

Outstanding! I’ll help you if I can :slight_smile:

The problem might be that you call updateFromUIDL() for the info window content at a wrong time, and the size calculations are not done correctly. Take a look at the
original VGoogleMap.java
around lines 369 and 404 on how I dodged the problem.

Hi Henri,
thanks for your quick answer.

I saw what you did and tried to move the updateFromUIDL all around but nothing changed really.
By running the code under the GWT debugger and trying to figure out what was going on, I saw that in the com.vaadin.terminal.gwt.client.ui.VOrdererLayout class,
line 169 in the public void updateFromUIDL(UIDL uidl, ApplicationConnection client) method

                childComponentContainer.renderChild(childUIDL, client,
                        activeLayoutSize.getWidth());

activeLayoutSize has ‘correct’ values when I display the verticallayout I want to display inside an info window in a standard vaadin window, while it is set to (0, 0) when I put it inside the infowindow.

I’ve simplified the code as much as I could to isolate the issue but can’t really see where is this member set.
It is something like

				UIDL paintableUIDL = u.getChildUIDL(0).getChildUIDL(0);
				Paintable paintable = client.getPaintable(paintableUIDL);
				log(1, "inside out PaintableClass=" + paintable.getClass().getName());
				Widget widget = (Widget)paintable;
				InfoWindow infoWindow = new InfoWindow();
				infoWindow.setContent(widget);
				//paintable.updateFromUIDL(paintableUIDL, client);
				infoWindow.open(mapWidget.getMapJSO(), testMarker);
				paintable.updateFromUIDL(paintableUIDL, client);

Thanks for your help :slight_smile:

Cheers,
Victor