|
Hi,
I am unsing GMap2 from WicketStuff (http://wicketstuff.org/confluence/display/STUFFWIKI/wicket-contrib-gmap2) and need to display a map in a pop-up dialog. I use JQuery for the dialog. When the Dialog comes up, the map's viewport is offset in relation to the window and only the cross-section of the map's position (starting outside the dialog window) and the actual pop-up window is being drawn. For example, assume the map starts at absolute position 0,0 with as size of 600,400 and the dialog is shown at absolute position 300,200 with size 600,500: Only the region (300,200 -> 600,400) is drawn. This is probably because the dialog is not shown when the GMap2 javascript calculates its position, so I need to call the "checkResize()" method on http://code.google.com/apis/maps/documentation/reference.html#GMap2 that is created by the WicketStuff control. Problem is, I can't get to the Javascript object underlying the wicketstuff representation. I'm trying to do something like: myDialog.setOpenEvent(JsScopeUiEvent .quickScope( "alert('fixing map size');\n" + " $('#mapObjectId').checkResize();\n" ); How can I get the proper "mapObjectId" value? --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] |
|
sorry my mind is in Sunday afternoon mode, and not able to wrap itself around this...
could you come up with a Quickstart example? mf Am 16.05.2010 um 14:55 schrieb Alexandros Karypidis: > Hi, > > I am unsing GMap2 from WicketStuff (http://wicketstuff.org/confluence/display/STUFFWIKI/wicket-contrib-gmap2) and need to display a map in a pop-up dialog. I use JQuery for the dialog. When the Dialog comes up, the map's viewport is offset in relation to the window and only the cross-section of the map's position (starting outside the dialog window) and the actual pop-up window is being drawn. For example, assume the map starts at absolute position 0,0 with as size of 600,400 and the dialog is shown at absolute position 300,200 with size 600,500: Only the region (300,200 -> 600,400) is drawn. > > This is probably because the dialog is not shown when the GMap2 javascript calculates its position, so I need to call the "checkResize()" method on http://code.google.com/apis/maps/documentation/reference.html#GMap2 that is created by the WicketStuff control. Problem is, I can't get to the Javascript object underlying the wicketstuff representation. I'm trying to do something like: > > myDialog.setOpenEvent(JsScopeUiEvent > .quickScope( > "alert('fixing map size');\n" + > " $('#mapObjectId').checkResize();\n" > ); > > How can I get the proper "mapObjectId" value? > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [hidden email] > For additional commands, e-mail: [hidden email] > --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] |
|
In reply to this post by akarypid
Ok, looking at the sources, I found that WicketStuff adds a
WebMarkupContainer which is used for the actual map. Unfortunately, it hides this object from its client code, so there's no way to access it and call "gmap2container.getMarkupId()". It does however assign the class "gmap" to the container. So I got around this using this ugly hack: myDialog.setOpenEvent(JsScopeUiEvent .quickScope( "var mapCtrl = $('.gmap').attr('id');\n" + "dom.getElementById(mapCtrl).checkResize();" ) ); Works if there's only one map in the page... On 16/5/2010 15:55, Alexandros Karypidis wrote: > Hi, > > I am unsing GMap2 from WicketStuff > (http://wicketstuff.org/confluence/display/STUFFWIKI/wicket-contrib-gmap2) > and need to display a map in a pop-up dialog. I use JQuery for the > dialog. When the Dialog comes up, the map's viewport is offset in > relation to the window and only the cross-section of the map's > position (starting outside the dialog window) and the actual pop-up > window is being drawn. For example, assume the map starts at absolute > position 0,0 with as size of 600,400 and the dialog is shown at > absolute position 300,200 with size 600,500: Only the region (300,200 > -> 600,400) is drawn. > > This is probably because the dialog is not shown when the GMap2 > javascript calculates its position, so I need to call the > "checkResize()" method on > http://code.google.com/apis/maps/documentation/reference.html#GMap2 > that is created by the WicketStuff control. Problem is, I can't get to > the Javascript object underlying the wicketstuff representation. I'm > trying to do something like: > > myDialog.setOpenEvent(JsScopeUiEvent > .quickScope( > "alert('fixing map size');\n" + > " $('#mapObjectId').checkResize();\n" > ); > > How can I get the proper "mapObjectId" value? > > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [hidden email] > For additional commands, e-mail: [hidden email] --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] |
|
In reply to this post by Martin Funk-3
I guess the description was rather complicated...
Anyway, the thing is: the "Map2" class from the Google Maps API, apparently looks at the location and size of a <div> tag used as its canvas, to do some setup at page load time. When the <div> it targets is hidden, its size/position attributes are apparently not correct. Thus, when the <div> becomes visible, the Map2 object has the incorrect coordinates and size (calculated during the page load) and draws itself in a messed up state. I came across this because I had my map inside a pop-up dialog (from JQueryUI) which is initially hidden and appears at the center of the browser window when the user clicks a button. Anyway, to have the Map2 control re-calculate and re-draw itself, you need to call its "checkResize()" method. To do that, I needed a reference to the JavaScript object holding the map. Since I was using the module from wicket-stuff, I was looking for a way to get to that javascript object (from my Java code), so that I may dynamically generate JavaScript code that calls "checkResize()" when the dialog is opened and becomes visible. Anyway, the solution in my previous post was wrong. It was a way to get to the <div> tag that is used as the map canvas. No point in calling checkResize() on that. What I needed was the Map2 JavaScript object that is used to control the map. The correct answer (now that I got it working) is: myJQueryDialog.setOpenEvent(JsScopeUiEvent .quickScope("var mapCtrlId = $('.gmap').attr('id');\n" + "Wicket.maps[mapCtrlId].map.checkResize();\n" )); The "Wicket.maps[]" object is managed by the code in "wicket-gmap.js" from the wicket-stuff module for maps. Reading back, I am not sure this explanation is simpler than my previous one, but hey, it IS Sunday afternoon... On 16/5/2010 16:16, Martin Funk wrote: > sorry my mind is in Sunday afternoon mode, and not able to wrap itself around this... > > could you come up with a Quickstart example? > > mf > > Am 16.05.2010 um 14:55 schrieb Alexandros Karypidis: > > >> Hi, >> >> I am unsing GMap2 from WicketStuff (http://wicketstuff.org/confluence/display/STUFFWIKI/wicket-contrib-gmap2) and need to display a map in a pop-up dialog. I use JQuery for the dialog. When the Dialog comes up, the map's viewport is offset in relation to the window and only the cross-section of the map's position (starting outside the dialog window) and the actual pop-up window is being drawn. For example, assume the map starts at absolute position 0,0 with as size of 600,400 and the dialog is shown at absolute position 300,200 with size 600,500: Only the region (300,200 -> 600,400) is drawn. >> >> This is probably because the dialog is not shown when the GMap2 javascript calculates its position, so I need to call the "checkResize()" method on http://code.google.com/apis/maps/documentation/reference.html#GMap2 that is created by the WicketStuff control. Problem is, I can't get to the Javascript object underlying the wicketstuff representation. I'm trying to do something like: >> >> myDialog.setOpenEvent(JsScopeUiEvent >> .quickScope( >> "alert('fixing map size');\n" + >> " $('#mapObjectId').checkResize();\n" >> ); >> >> How can I get the proper "mapObjectId" value? >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [hidden email] >> For additional commands, e-mail: [hidden email] >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [hidden email] > For additional commands, e-mail: [hidden email] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [hidden email] For additional commands, e-mail: [hidden email] |
|
You can simply add a checkResize() function to the Gmap2.
See : http://apache-wicket.1842946.n4.nabble.com/GMap2-in-a-Wiquery-Dialog-td3627392.html#a4102386 Regards, Gabriel. |
| Powered by Nabble | Edit this page |
