2009/9/16 Martin Funk <[email protected]>

> Hi Doug,
>
> the change of getJSconstructor() from protected to public is fine by me.
> Go ahead an commit that change.
>

argh... I withdraw and claim the opposite.
or at least rethink it really hard.
If the map you are reffering to already has a JavaSript-counterpart-instance
on the client your ar most likely better of doing al that in a JavaScript on
the client side.

mf



>
> The client code you posted, I haven't analyzed in depth, but seeing all
> that JavaScript genereated on the Server using so many String literals would
> make me start to think if that code could somehow be moved into a custom
> JavaScript file.
> So instead of shoving all that JavaScript code from the server to the
> client things could me reduced to calling a custom JavaScript function. It
> might be mind bending, but I think its always worth a thought.
>
> mf
>
> 2009/9/16 Doug Leeper <[email protected]>
>
> I recently moved from 1.3.6 to 1.4.1 and came across a compile error.  I
>> believe I had a local copy of GMap2 (1.3.x) and made modifications to make
>> the following work.
>>
>> Now I would like to propose a change but not sure who I need to talk.
>>  Specifically, I would like to request to change GOverlay.getJSConstructor()
>> from protected to public (and all subsequent derived classes)
>>
>> I am need to send javascript back to the browser which basically rebounds
>> the a GMap2...the following is my code snippet:
>>
>> <raw>
>>    private String getJSRebound() {
>>        StringBuffer buf = new StringBuffer();
>>        buf.append("var bounds = new GLatLngBounds();\n");
>>        buf.append("var map = " + map.getJSinvoke("map"));
>>        buf.append("bounds.extend( map.getCenter() ); \n");
>>
>>        int idx = 0;
>>
>>        for (GOverlay overlay : map.getOverlays()) {
>>            if (overlay instanceof GMarker) {
>>                GMarker marker = (GMarker) overlay;
>>                GLatLng point = marker.getLatLng();
>>                buf.append("bounds.extend( " + point.getJSconstructor()
>>                        + " );\n");
>>            }
>>
>>            if (overlay instanceof GGeoXml) {
>>                GGeoXml xml = (GGeoXml) overlay;
>>
>>                String var = "xml" + idx++;
>>
>>                // this is broken with 1.4.1
>>                // getJSconstructor has been made protected
>>
>>                buf.append("var " + var + " = " + xml.getJSconstructor()
>>                        + "; \n");
>>
>>                buf.append("GEvent.addListener(" + var
>>                        + ", 'load', function(){ \n");
>>                buf.append("    bounds.extend( " + var
>>                        + ".getDefaultBounds().getSouthWest() ); \n");
>>                buf.append("    bounds.extend( " + var
>>                        + ".getDefaultBounds().getNorthEast() ); \n");
>>                buf.append("map.setZoom( map.getBoundsZoomLevel(bounds)
>> );\n");
>>                buf.append("}); \n");
>>            }
>>        }
>>
>>        if (idx == 0) {
>>            GLatLng point = new GLatLng(location.getCentralLatitude(),
>> location
>>                    .getCentralLongitude(), false);
>>            buf.append("bounds.extend( " + point.getJSconstructor() + "
>> );\n");
>>            buf
>>                    .append("map.setZoom(
>> Math.min(map.getBoundsZoomLevel(bounds),8) );\n");
>>        } else {
>>            buf.append("map.setZoom( map.getBoundsZoomLevel(bounds) );\n");
>>        }
>>        buf.append("map.setCenter( bounds.getCenter() );\n");
>>        return buf.toString();
>>    }
>> </raw>
>>
>> This method is called in my constructor:
>>
>> <raw>
>>    map.add(new HeaderContributor(new IHeaderContributor() {
>>            private static final long serialVersionUID = 1L;
>>
>>            public void renderHead(IHeaderResponse response) {
>>                response.renderOnDomReadyJavascript(getJSRebound());
>>            }
>>        }));
>> </raw>
>>
>>
>> Without the ability to generated the JS object and keep a reference, I
>> don't believe I can accomplish what I need to do...rebound the map within
>> the points I have stored.  If someone has a better idea, I am all ears.  If
>> not, the accessibliity change would greatly be appreciated.
>>
>> Thanks
>> - Doug
>
>
>

Reply via email to