I've noted the newest version of the API does not preserve the initial
z-order of KML layers when they are hidden/re-displayed like the v2
API did. A case in point is the conversion to v3API map I have been
working on, which displays a KML-generated layer of our service
territory (drawn as a polyline with a nearly-transparent fill) and a
KML-generated layer of reported outages (drawn as simple markers with
associated filled polygons). The service territory layer is associated
with a checkbox that toggles its display. It is also loaded before the
outages layer.

The problem manifests should the user toggle the service territory
layer to hidden, and then toggle it again to visible. When it is re-
drawn, the service territory now is drawn ON TOP OF the outages layer,
potentially covering any markers which are near the border with the
polyline. If the service territory were a solid filled polygon, it
would probably hide all of the outage markers now beneath it.

My workaround has been to redraw both KML layers, to enforce the
initial z-order of the KML layers (annoying, but I did not see any
other solution to the issue). The relevant code is:

function initialize() {
...
var svcTerritoryURL = 'http://www.myWebSite.com/datafiles/elec-svc-
territory.kml';
   var svcTerritoryOptions = {
      preserveViewport: 1
   };
svcTerritoryLayer = new google.maps.KmlLayer(svcTerritoryURL,
svcTerritoryOptions);
svcTerritoryLayer.setMap(map);

// set the initial state of the check-box to checked
document.getElementById('show_service_territory').checked = true;

var outageURL = 'http://www.myWebSite.com/datafiles/OutageMap.kml';
   var outageOptions = {
      preserveViewport: 1 //leave viewport unchanged, otherwise, map
will attempt to zoom in to outage marker(s)
   };
outageLayer = new google.maps.KmlLayer(outageURL, outageOptions);
outageLayer.setMap(map);
...
}
...
// toggle the display of the Service Territory
function toggleServiceTerritory() {
   if (!document.getElementById('show_service_territory').checked)
      svcTerritoryLayer.setMap(null);
   else
      // re-draw the outages layer ON TOP of the service territory
layer,
      // otherwise, the outages layer gets displayed behind the
service territory layer.
      svcTerritoryLayer.setMap(map);
      outageLayer.setMap(map);
}

HTH

-- JF


On Mar 30, 1:14 pm, Mike Dolbow <mike.dol...@state.mn.us> wrote:
> Get any solutions for this? I'm working on a "TOC/legend" with 4 KML
> layers and just looking for a successful example. I can remove a KML
> when checking OFF the box no problem, but bringing it back (and doing
> so in the right draw order) is proving a bit more challenging...
>
> On Feb 18, 2:17 pm, Francisco <fr...@sbcglobal.net> wrote:
>
> > I'm stuck.  I can't get my checkbox functional.  I would like to
> > toggle a KML layer with a checkbox.  The layer should be on when
> > loaded (check box checked) and then turned off when unchecked.
> > Simple, I know, but I can't get it functional despite looking at lots
> > of working examples and checking all the posts.
>
> > Site is located atwww.fhitestsite.com/mdctest
>
> > Thanks in advance for the help.

-- 
You received this message because you are subscribed to the Google Groups 
"Google Maps JavaScript API v3" group.
To post to this group, send email to google-maps-js-api-v3@googlegroups.com.
To unsubscribe from this group, send email to 
google-maps-js-api-v3+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/google-maps-js-api-v3?hl=en.

Reply via email to