I would imagine the ge instance isn't guaranteed to survive being 'hidden' and then re-enabled.
probably just listen for maptypechanged event, and make sure the ge globe is setup as required... http://code.google.com/apis/maps/documentation/reference.html#GMap2.maptypechanged On 13 May 2010 15:24, Arkaduis <[email protected]> wrote: > Hi, > I'm trying to integrate the Earth plugin into my website. I'd like to > use a <div> with several views (maps, sattelite, terain and earth). > That's easy but I want to add some layers to earth (roads, borders and > buildings). I'm learing with code playgroud where I paste this code: > > var map; > var ge; > > google.load("maps", "2.x"); > > function init() { > map = new GMap2(document.getElementById('map3d')); > map.setCenter(new GLatLng(37, -122), 12); > > var mapui = map.getDefaultUI(); > mapui.maptypes.physical = false; > map.setUI(mapui); > > // add 'Earth' as one of the map types > map.addMapType(G_SATELLITE_3D_MAP); > > // create a marker > var marker = new GMarker(new GLatLng(37, -122)); > GEvent.addListener(marker, "click", function() { > var html = '<div style="width: 210px; padding-right: 10px">Hello > world!</div>'; > marker.openInfoWindowHtml(html); > }); > > map.addOverlay(marker); > google.maps.Event.trigger(marker, "click"); > > // create a polyline (LineString Placemark in KML) > var polyline = new GPolyline([ > new GLatLng(37.04, -122.04), > new GLatLng(37.02, -122.02), > new GLatLng(37.03, -122.01), > new GLatLng(37.01, -121.99) > ], "#ff0000", 10); > > map.addOverlay(polyline); > > // do stuff with Earth when the user switches to it > GEvent.addListener(map, 'maptypechanged', function() { > if (ge) > return; > > map.getEarthInstance(function(pluginInstance) { > ge = pluginInstance; > doStuffWithEarth(); > }); > }); > } > > function doStuffWithEarth() { > document.getElementById('installed-plugin-version').innerHTML = > ge.getPluginVersion().toString(); > > ge.getLayerRoot().enableLayerById(ge.LAYER_ROADS, true); > ge.getLayerRoot().enableLayerById(ge.LAYER_BORDERS, true); > ge.getLayerRoot().enableLayerById(ge.LAYER_BUILDINGS, true); > } > > All of this is standard "Maps/Earth Integration" except the last 3 > lines. > After the map is loaded, i can switch to earth and all layers are > displayed BUT when i switch back to maps and again to earth then the > layers disappear. What's wrong with this code? > > -- > You received this message because you are subscribed to the Google Groups > "Google Maps API" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/google-maps-api?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Google Maps API" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/google-maps-api?hl=en.
