Hmm.... no such luck! I have now moved it to to following:
function initialize() {
var myOptions = {
center: new google.maps.LatLng(38.099983, -80.683594),
zoom: 7,
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.HORIZONTAL_BAR,
position: google.maps.ControlPosition.TOP_RIGHT
},
zoomControlOptions: {
style: google.maps.ZoomControlStyle.LARGE
},
streetViewControl: true,
streetViewControlOptions: {
position: google.maps.ControlPosition.LEFT_TOP
},
mapTypeId: google.maps.MapTypeId.TERRAIN
};
map = new google.maps.Map(document.getElementById('map_canvas'),
myOptions);
var layer = new google.maps.FusionTablesLayer();
updateLayerQuery(layer);
layer.setMap(map);
* function ToggleLayer() {
var chkLayer = document.getElementById("show_hide_Layer");
if (chkLayer.checked === true) {
//Turn layer on
layer.setMap(map);
}
else {
//Turn layer off
layer.setMap(null);
}
}*
On Thu, Aug 2, 2012 at 9:45 AM, asgallant <[email protected]> wrote:
> Make sure the function comes after you declare the "layer" variable - it
> should work. If it still doesn't, I'll try to do up a jsfiddle example and
> see what's going on.
>
>
> On Thursday, August 2, 2012 12:03:52 PM UTC-4, es wrote:
>>
>> So, I deleted the "google.maps.event.**addDomListener(window, 'load',
>>> initialize);" at the very bottom of the script and I moved the ToggleLayer
>>> function to here (see below), but the toggle still doesn't work. Did I do
>>> this correctly?
>>>
>>>
>> <script type="text/javascript">
>> google.load('visualization', '1', {packages: ['corechart']});
>> google.load('maps', '3.9', {other_params: "sensor=false"});
>> google.setOnLoadCallback(**initialize);
>> var map;
>> function initialize() {
>>
>> *function ToggleLayer() {
>> var chkLayer = document.getElementById("show_hide_Layer");
>> if (chkLayer.checked === true) {
>> //Turn layer on
>> layer.setMap(map);
>> }
>> else {
>> //Turn layer off
>> layer.setMap(null);
>> }
>> }
>>
>> *
>> On Wed, Aug 1, 2012 at 1:39 PM, asgallant <[email protected]>wrote:
>>
>>> Two things:
>>>
>>> 1) you shouldn't call the initialize function from both
>>> google.setOnLoadCallback and google.maps.event.**addDomListener - the
>>> setOnLoadCallback should be sufficient (and the other one is probably
>>> throwing an error - if it isn't, then initialize is being called twice,
>>> which you probably don't want).
>>>
>>> 2) the source of your problem is the scope of the "layer" variable. It
>>> is declared locally inside the initialize function, and you are trying to
>>> access it from outside the initialize function. You either need to declare
>>> "layer" in a global scope or move the ToggleLayer function inside the
>>> initialize function.
>>>
>>>
>>> On Wednesday, August 1, 2012 4:27:30 PM UTC-4, es wrote:
>>>>
>>>> I'm wondering if it's interfering in some way, with my pie and scatter
>>>> (which also reference the "layer" variable). I wanted to spare you a
>>>> lengthy code posting, but maybe it would be helpful to see the rest of the
>>>> code??
>>>>
>>>> <!-- Below is the code for the google map: -->
>>>>
>>>> <script type="text/javascript">
>>>> google.load('visualization', '1', {packages: ['corechart']});
>>>> google.load('maps', '3.9', {other_params: "sensor=false"});
>>>> google.setOnLoadCallback(**initi**alize);
>>>> var map;
>>>> function initialize() {
>>>> var myOptions = {
>>>> center: new google.maps.LatLng(38.099983, -80.683594),
>>>> zoom: 7,
>>>> mapTypeControl: true,
>>>> mapTypeControlOptions: {
>>>> style: google.maps.**MapTypeControlStyl**e.**
>>>> HORIZONTAL_BAR,
>>>> position: google.maps.ControlPosition.**TO**P_RIGHT
>>>> },
>>>> zoomControlOptions: {
>>>> style: google.maps.ZoomControlStyle.**L**ARGE
>>>> },
>>>> streetViewControl: true,
>>>> streetViewControlOptions: {
>>>> position: google.maps.ControlPosition.**LE**FT_TOP
>>>> },
>>>> mapTypeId: google.maps.MapTypeId.TERRAIN
>>>> };
>>>>
>>>> map = new google.maps.Map(document.**getEl**ementById('map_canvas'),
>>>> myOptions);
>>>> var layer = new google.maps.FusionTablesLayer(****);
>>>> updateLayerQuery(layer);
>>>> layer.setMap(map);
>>>>
>>>> var kmlLayerNationalforestURL = 'http://www.esenvironmental.**co**
>>>> m/kml/national_forests.kml<http://www.esenvironmental.com/kml/national_forests.kml>
>>>> ';
>>>> var kmlLayerWildernessURL = 'http://www.esenvironmental.**co**
>>>> m/kml/wilderness.kml<http://www.esenvironmental.com/kml/wilderness.kml>
>>>> ';
>>>> var kmlLayerBoundaryURL = 'http://www.esenvironmental.**co**
>>>> m/kml/study_region.kml<http://www.esenvironmental.com/kml/study_region.kml>
>>>> ';
>>>> <!-- preserveViewport prevents the map from zooming to the specific kml
>>>> file -->
>>>> var kmlOptions = {
>>>> preserveViewport: true
>>>> };
>>>>
>>>> kmlLayerNationalforest = new
>>>> google.maps.KmlLayer(**kmlLayerN**ationalforestURL,
>>>> kmlOptions);
>>>> kmlLayerNationalforest.**setMap**(null);
>>>>
>>>> kmlLayerWilderness = new google.maps.KmlLayer(**kmlLayerW**ildernessURL,
>>>> kmlOptions);
>>>> kmlLayerWilderness.setMap(**nul**l);
>>>>
>>>> kmlLayerBoundary = new google.maps.KmlLayer(**kmlLayerB**oundaryURL,
>>>> kmlOptions);
>>>> kmlLayerBoundary.setMap(map);
>>>>
>>>>
>>>> document.getElementById('show_****hide_KML_Layer_Nationalforest'****).checked
>>>> = false;
>>>> document.getElementById('show_****hide_KML_Layer_Wilderness').**ch**ecked
>>>> = false;
>>>> document.getElementById('show_****hide_KML_Layer_Boundary').**chec**ked
>>>> = true;
>>>> document.getElementById('show_****hide_Layer').checked = true;
>>>> //In the Javascript OUTSIDE of where you are creating your map, toggle
>>>> the display of the KML Layers
>>>> //(see near the end of this Java Script code). If the toggle is
>>>> created inside the map code, toggling will NOT work!
>>>>
>>>>
>>>> var pieChart = new google.visualization.**ChartWrap**per({
>>>> containerId: "visualization",
>>>> chartType: "PieChart",
>>>> options: {
>>>> colors: ['#0000CC', '#3399FF', '#66CC00', '#FFFF00',
>>>> '#FF9933', '#FF0033'],
>>>> legendTextStyle: {
>>>> color: '#666666',
>>>> fontSize: '11'
>>>> },
>>>> titleTextStyle: {
>>>> color: '#006600',
>>>> fontSize: '12'
>>>> },
>>>> titlePosition: 'out',
>>>> legend: 'left',
>>>> is3D: true,
>>>> height: 150,
>>>> width: 350,
>>>> backgroundColor: 'none',
>>>> tooltip: {
>>>> textStyle: {
>>>> color: 'black'
>>>> },
>>>> showColorCode: true
>>>> },
>>>> pieSliceText: 'percentage',
>>>> pieSliceTextStyle: {
>>>> color: 'white',
>>>> fontSize: '11'
>>>> },
>>>> chartArea: {
>>>> top: '30',
>>>> left: '5',
>>>> height: "80%",
>>>> width: "70%"
>>>> }
>>>> }
>>>> });
>>>>
>>>>
>>>> drawVisualization('Bear Branch');
>>>> var query = new google.visualization.Query('ht****
>>>> tp://www.google.com/**fusiontabl**es/gvizdata?tq='<http://www.google.com/fusiontables/gvizdata?tq='>
>>>> );
>>>> query.setQuery('SELECT Site, CALK, MAGIC_CL50 FROM 3235688');
>>>> query.send(function(response) {
>>>> var data = response.getDataTable();
>>>> var baseView = new google.visualization.DataView(****data);
>>>> baseView.setColumns([1, 2]);
>>>> var scatter = new google.visualization.**ChartWrap**per({
>>>> containerId: "scatter",
>>>> chartType: "ScatterChart",
>>>> dataTable: baseView,
>>>> options: {
>>>> width: 300,
>>>> height: 300,
>>>> titleX: 'ANC (ueq/L)', fontSize: '12',
>>>> title: 'Site',
>>>> backgroundColor: {fill: 'white'},
>>>> titleTextStyle: {
>>>> color: '#006600',
>>>> fontSize: '12'
>>>> },
>>>> titleY: 'CL for ANC=50 (meq/m2/yr)', fontSize: '12',
>>>> fontName: 'Arial',
>>>> series: [{
>>>> pointSize: 5
>>>> }, {
>>>> visibleInLegend: false,
>>>> pointSize: 10,
>>>> color: 'red'
>>>> }],
>>>> legend: {
>>>> position: 'none',
>>>> textStyle: {
>>>> color: 'blue',
>>>> fontSize: 12
>>>> }
>>>> }
>>>> }
>>>> });
>>>> var runOnce = google.visualization.events.**ad**dListener(scatter,
>>>> 'ready', function() {
>>>> google.maps.event.addListener(****layer, 'click',
>>>> function(e) {
>>>> var Site = e.row['Site'].value;
>>>> setScatterSelection(Site);
>>>> drawVisualization(Site);
>>>> });
>>>> google.maps.event.**addDomListen**er(document.**
>>>> getElementById('**Site'), 'change', function() {
>>>> var Site = this.value;
>>>> updateLayerQuery(layer, Site);
>>>> setScatterSelection(Site);
>>>> drawVisualization(Site);
>>>> });
>>>>
>>>> google.visualization.events.**re**moveListener(runOnce);
>>>> });
>>>>
>>>> setScatterSelection('Bear Branch');
>>>>
>>>> function setScatterSelection(site) {
>>>> var row = data.getFilteredRows([{
>>>> column: 0,
>>>> value: site
>>>> }])[0];
>>>> var view = new google.visualization.DataView(****baseView);
>>>> view.setColumns([0, 1, {
>>>> type: 'number',
>>>> label: baseView.getColumnLabel(1),
>>>> calc: function(dt, index) {
>>>> if (row == index) {
>>>> return dt.getValue(index, 1);
>>>> }
>>>> else {
>>>> return null;
>>>> }
>>>> }}]);
>>>>
>>>> var ready =
>>>> google.visualization.events.**ad**dListener(scatter,
>>>> 'ready', function() {
>>>> scatter.getChart().**setSelectio**n([{
>>>> row: row,
>>>> column: 2
>>>> }]);
>>>> google.visualization.events.**re**moveListener(ready);
>>>> });
>>>>
>>>> scatter.setDataTable(view);
>>>> scatter.setOption('title', site);
>>>> scatter.draw();
>>>> };
>>>> });
>>>>
>>>> function drawVisualization(Site) {
>>>> var pieQuery = new google.visualization.Query('ht****
>>>> tp://www.google.com/**fusiontabl**es/gvizdata?tq='<http://www.google.com/fusiontables/gvizdata?tq='>
>>>> );
>>>> pieQuery.setQuery("SELECT Site, BCw, BCdep, Nup, Nimm,
>>>> ANClimit, BCup FROM 3235688 WHERE Site = '" + Site + "'");
>>>> pieQuery.send(function(**respons**e) {
>>>> var baseData = response.getDataTable();
>>>>
>>>> var pieData = new google.visualization.**DataTable**();
>>>> pieData.addColumn('string', baseData.getColumnLabel(0));
>>>> pieData.addColumn('number', 'Value');
>>>>
>>>> for (var i = 1; i < baseData.getNumberOfColumns(); i++) {
>>>> pieData.addRow([baseData.**getCo**lumnLabel(i),
>>>> baseData.getValue(0, i)]);
>>>> }
>>>>
>>>> pieChart.setOption('title', Site);
>>>> pieChart.setDataTable(pieData)****;
>>>> pieChart.draw();
>>>>
>>>> basePieData = null;
>>>> pieData = null;
>>>> });
>>>> }
>>>>
>>>> function updateLayerQuery(layer) {
>>>> layer.setOptions({
>>>> query: {
>>>> select: 'Site',
>>>> from: '3235688'
>>>> }
>>>> });
>>>> }
>>>> }
>>>>
>>>> function toggleKMLLayerBoundary() {
>>>> if (!document.getElementById('**sho**
>>>> w_hide_KML_Layer_Boundary')**.**checked)
>>>> kmlLayerBoundary.setMap(null);
>>>> else
>>>> kmlLayerBoundary.setMap(map);
>>>> }
>>>> function toggleKMLLayerWilderness() {
>>>> if (!document.getElementById('**sho**w_hide_KML_Layer_**
>>>> Wilderness').**checked)
>>>> kmlLayerWilderness.setMap(**null**);
>>>> else
>>>> kmlLayerWilderness.setMap(map)****;
>>>> }
>>>> function toggleKMLLayerNationalforest() {
>>>> if (!document.getElementById('**sho**w_hide_KML_Layer_**
>>>> Nationalfores**t').checked)
>>>> kmlLayerNationalforest.setMap(****null);
>>>> else
>>>> kmlLayerNationalforest.setMap(****map);
>>>> }
>>>> function ToggleLayer() {
>>>> var chkLayer = document.getElementById("show_****hide_Layer");
>>>> if (chkLayer.checked === true) {
>>>> //Turn layer on
>>>> layer.setMap(map);
>>>> }
>>>> else {
>>>> //Turn layer off
>>>> layer.setMap(null);
>>>> }
>>>> }
>>>>
>>>> google.maps.event.**addDomListen**er(window, 'load', initialize);
>>>> </script>
>>>>
>>>>
>>>> On Wednesday, August 1, 2012 1:06:34 PM UTC-7, es wrote:
>>>>
>>>>> Oh yes... I see that now. However after making the change the fusion
>>>>> layer still does not turn off and on. Any other thoughts?
>>>>>
>>>>> On Wednesday, August 1, 2012 12:58:51 PM UTC-7, asgallant wrote:
>>>>>
>>>>>> It's in the javascript; it should be:
>>>>>>
>>>>>> var chkLayer = document.getElementById("show_****hide_Layer");
>>>>>>
>>>>>> On Wednesday, August 1, 2012 3:53:31 PM UTC-4, es wrote:
>>>>>>>
>>>>>>> I tried using a lower case "l", but that didn't work either:
>>>>>>> id="show_hide_layer". Is this the wrong id all together?
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Wednesday, August 1, 2012 12:34:01 PM UTC-7, asgallant wrote:
>>>>>>>
>>>>>>>> The id of the checkbox doesn't match the id you use to set the
>>>>>>>> chkLayer variable in the ToggleLayer function.
>>>>>>>>
>>>>>>>> On Wednesday, August 1, 2012 3:15:43 PM UTC-4, es wrote:
>>>>>>>>>
>>>>>>>>> I have unsuccessfully tried to create a toggle (checkbox) for my
>>>>>>>>> google fusion tables layer which should work with the toggling of my
>>>>>>>>> kml
>>>>>>>>> layers (the kml layers toggle off and on my map successfully). Here
>>>>>>>>> are
>>>>>>>>> some snippets of code that I am using to code the klm layers and the
>>>>>>>>> one
>>>>>>>>> google fusion layer. I have not included a bunch of other coding,
>>>>>>>>> including the pie and scatter plots (also referencing the fusion table
>>>>>>>>> layer). Thanks in advance for any help!
>>>>>>>>>
>>>>>>>>> function initialize() {
>>>>>>>>> var myOptions = {
>>>>>>>>> center: new google.maps.LatLng(38.099983, -80.683594),
>>>>>>>>> zoom: 7,
>>>>>>>>> mapTypeControl: true,
>>>>>>>>> mapTypeControlOptions: {
>>>>>>>>> style: google.maps.**MapTypeControlStyl**e.**
>>>>>>>>> HORIZONTAL_BAR,
>>>>>>>>> position: google.maps.ControlPosition.**TO**P_RIGHT
>>>>>>>>> },
>>>>>>>>> zoomControlOptions: {
>>>>>>>>> style: google.maps.ZoomControlStyle.**L**ARGE
>>>>>>>>> },
>>>>>>>>> streetViewControl: true,
>>>>>>>>> streetViewControlOptions: {
>>>>>>>>> position: google.maps.ControlPosition.**LE**FT_TOP
>>>>>>>>> },
>>>>>>>>> mapTypeId: google.maps.MapTypeId.TERRAIN
>>>>>>>>> };
>>>>>>>>>
>>>>>>>>> map = new google.maps.Map(document.**getEl**ementById('map_canvas'),
>>>>>>>>> myOptions);
>>>>>>>>> //the "layer" is the one I am trying to have function with a
>>>>>>>>> toggle
>>>>>>>>> var layer = new google.maps.FusionTablesLayer(****);
>>>>>>>>> updateLayerQuery(layer);
>>>>>>>>> layer.setMap(null);
>>>>>>>>>
>>>>>>>>> var kmlLayerWildernessURL = 'http://www.esenvironmental.**co**
>>>>>>>>> m/kml/wilderness.kml<http://www.esenvironmental.com/kml/wilderness.kml>
>>>>>>>>> ';
>>>>>>>>> var kmlLayerBoundaryURL = 'http://www.esenvironmental.**co**
>>>>>>>>> m/kml/study_region.kml<http://www.esenvironmental.com/kml/study_region.kml>
>>>>>>>>> ';
>>>>>>>>> var kmlOptions = {
>>>>>>>>> preserveViewport: true
>>>>>>>>> };
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> kmlLayerWilderness = new
>>>>>>>>> google.maps.KmlLayer(**kmlLayerW**ildernessURL,
>>>>>>>>> kmlOptions);
>>>>>>>>> kmlLayerWilderness.setMap(**nul**l);
>>>>>>>>> kmlLayerBoundary = new google.maps.KmlLayer(**kmlLayerB**oundaryURL,
>>>>>>>>> kmlOptions);
>>>>>>>>> kmlLayerBoundary.setMap(map);
>>>>>>>>>
>>>>>>>>> document.getElementById('show_****hide_KML_Layer_Wilderness').**ch
>>>>>>>>> **ecked = false;
>>>>>>>>> document.getElementById('show_****hide_KML_Layer_Boundary').**chec
>>>>>>>>> **ked = true;
>>>>>>>>> document.getElementById('show_****hide_Layer').checked = false;
>>>>>>>>>
>>>>>>>>> function toggleKMLLayerBoundary() {
>>>>>>>>> if (!document.getElementById('**sho**
>>>>>>>>> w_hide_KML_Layer_Boundary')**.**checked)
>>>>>>>>> kmlLayerBoundary.setMap(null);
>>>>>>>>> else
>>>>>>>>> kmlLayerBoundary.setMap(map);
>>>>>>>>> }
>>>>>>>>> function toggleKMLLayerWilderness() {
>>>>>>>>> if (!document.getElementById('**sho**w_hide_KML_Layer_**
>>>>>>>>> Wilderness').**checked)
>>>>>>>>> kmlLayerWilderness.setMap(**null**);
>>>>>>>>> else
>>>>>>>>> kmlLayerWilderness.setMap(map)****;
>>>>>>>>> }
>>>>>>>>> function ToggleLayer() {
>>>>>>>>> var chkLayer = document.getElementById("**chkLa**yer");
>>>>>>>>> if (chkLayer.checked === true) {
>>>>>>>>> //Turn layer on
>>>>>>>>> layer.setMap(map);
>>>>>>>>> }
>>>>>>>>> else {
>>>>>>>>> //Turn layer off
>>>>>>>>> layer.setMap(null);
>>>>>>>>> }
>>>>>>>>> }
>>>>>>>>> <!-- Below is the code for the checkboxes: -->
>>>>>>>>> Show:<input type="checkbox" id="show_hide_KML_Layer_**Bounda**ry"
>>>>>>>>> onClick="**toggleKMLLayerBoundar**y();" />Study Area<p>
>>>>>>>>> Show:<input type="checkbox" id="show_hide_KML_Layer_**Wilder**ness"
>>>>>>>>> onClick="**toggleKMLLayerWildern**ess();" />Wilderness<p>
>>>>>>>>> Show:<input type="checkbox" id="show_hide_Layer"
>>>>>>>>> onClick="toggleLayer();" />Sites<p>
>>>>>>>>> <!-- Above is the code for the checkboxes: -->
>>>>>>>>>
>>>>>>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Google Visualization API" group.
>>> To view this discussion on the web visit https://groups.google.com/d/**
>>> msg/google-visualization-api/-**/BcZdEWox9icJ<https://groups.google.com/d/msg/google-visualization-api/-/BcZdEWox9icJ>
>>> .
>>>
>>> To post to this group, send email to google-visualization-api@**
>>> googlegroups.com <[email protected]>.
>>> To unsubscribe from this group, send email to google-visualization-api+*
>>> *[email protected]<google-visualization-api%[email protected]>
>>> .
>>> For more options, visit this group at http://groups.google.com/**
>>> group/google-visualization-**api?hl=en<http://groups.google.com/group/google-visualization-api?hl=en>
>>> .
>>>
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Google Visualization API" group.
> To view this discussion on the web visit
> https://groups.google.com/d/msg/google-visualization-api/-/WjFQ9ztIel8J.
>
> 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-visualization-api?hl=en.
>
--
You received this message because you are subscribed to the Google Groups
"Google Visualization 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-visualization-api?hl=en.