Tables de fusion de base API: Comment faites-vous une requête de mise à jour correctement?

StackOverflow https://stackoverflow.com//questions/9640465

Question

Je fais référence à une tables de fusion Exemple d'API "Demande de mise à jour" HTTPS: // Développeurs .google.com / FusionTables / Documents / Samples / Change_Query Il s'agit d'un menu déroulant qui modifie le contenu de la couche sur la carte.

J'ai essayé de reconstruire l'exemple de mon propre site, mais je n'ai pas encore travaillé. J'ai réduit les éventuelles erreurs et les pièges à la partie où la couche (avec des données de ma table de fusion Google Fusion) est initialisée. On dirait que dans l'exemple de Google:

    var layer = new google.maps.FusionTablesLayer({
      query: {
        select: locationColumn,
        from: tableId
      },
      map: map
    });

Voici le code qui m'a élaboré dans tous mes propres exemples avec des tables de fusion, à l'exception de celle indiquée ci-dessus.

var layer = new google.maps.FusionTablesLayer(tableid)
layer.setMap(map);

Voici le lien pour le code en direct: http://krealeo12.appot.com/

Comme je suis nouveau dans toute cette API et cette chose javascript, je ne peux pas distinguer pourquoi le premier exemple ne fonctionne pas et le second fait ?! Quelle est la différence et plus importante, qu'est-ce que cela signifie?

Je suis très reconnaissant pour chaque indice et chaque conseil! J.

Était-ce utile?

La solution

This issue also confused me when I started using Fusion Tables. You will find many examples where deprecated methods are used:

var layer = new google.maps.FusionTablesLayer(tableid)
layer.setMap(map);
layers.setQuery("select * from " + tableid + " where ridership > 5000");

The first example you quote is the proper way to do it. What was most confusing is that you cannot combine the two approaches. E.g. last time I checked, the following will not work. The initial map will display fine but the query will not work.

var layer = FusionTablesLayer(tableid);
var layer.setOptions{
    query: {
     select: 'address',
     from: '198945',
     where: 'ridership > 5000'
  }
});

The proper way is described in the docs

Autres conseils

Really another question, so I'm adding a new answer. You've got an error in your updateMap() function.

 function updateMap(layer, tableid, locationColumn) {
        var sportart = document.getElementById('search-string').value;
        if (sportart) {
          layer.setOptions({
            query: {
              select: locationColumn,
              from: tableid,
              where: "sportart = '" + search-string + "'" // ERROR
            }
          });
        } else {
          layer.setOptions({
            query: {
              select: locationColumn,
              from: tableid
            }
          });
        }
      }

The select list search value is called "sportart" not "search-string".

Google does not provide error messages from queries, so you may need to use trial and error and a search for examples to get results. This worked for me. Note the quotes around the whole string (as you'd expect), plus the quotes around the date.

     layer.setOptions({
       query:{
            select: "col1",
            from: "1Ayaf5aKAanSv6HAtsTLtcAhrnpF94XyuNZ9u_Sk",
            where: "Date<'01/01/2011'"
         },
         styles:[{
                 markerOptions:{
                        iconName:'measle_gray'
                }
            }]
      });           

A useful but hard-to-find page describes acceptable date formats, among other things: https://developers.google.com/fusiontables/docs/v1/sql-reference I do not know why many colors of small dot are called "measle_" rather than "small_"

You can use this,

 var fusionOptions = {

          query: {
            select: "Geometry",
            from: "tableId",
            where: ""
          },

        styles: [{

          where: 'Available_Impressions <  605173',
          polygonOptions: {
            fillColor: '#88bad8',
            fillOpacity: 0.8
          }
        }, {
          where: 'Available_Impressions > 605173',
          polygonOptions: {
            fillColor: '#5792c3',
            fillOpacity: 0.8
          }
        }, {
          where: 'Available_Impressions > 1210347',
          polygonOptions: {
            fillColor: '#4572ab',
            fillOpacity: 0.8
          }
        }]          

    }
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top