0

フュージョンテーブルレイヤーに1kmlのポイントが読み込まれています。geoxml3を使用してレイヤーエクステントのmap.fitBoundsを解除するためにデータを解析したいのですが、それは機能していません。以下の正確なコードは、KMLポリゴンでは機能しますが、KMLポイントレイヤーでは機能しません。

コード:

    var queryText = encodeURIComponent("SELECT * FROM 1CNJWjLDYgBkJGZVslJ67Fak4DyqadEFuIabzQ60 ");
    var query = new google.visualization.Query('http://www.google.com/fusiontables/gvizdata?tq='  + queryText);

    query.send(zoomTo);
    }

    function zoomTo(response) {
    if (!response) {
      alert('no response');
      return;
    }
    if (response.isError()) {
      alert('Error in query: ' + response.getMessage() + ' ' + response.getDetailedMessage());
      return;
    } 

      FTresponse = response;
      //for more information on the response object, see the documentation
      //http://code.google.com/apis/visualization/documentation/reference.html#QueryResponse
      numRows = response.getDataTable().getNumberOfRows();
      numCols = response.getDataTable().getNumberOfColumns();
      var geoXml = new geoXML3.parser();
      var bounds = new google.maps.LatLngBounds();
      for (var i = 0; i < numCols; i++){
        if (FTresponse.getDataTable().getColumnLabel(i) == 'geometry') {
          var ColIndex = i;
        }
      }
      if (!ColIndex){
        alert('Geometry column "geometry" not found.')
      }
      for (var i = 0; i < numRows; i++){
          var kml = FTresponse.getDataTable().getValue(i,ColIndex);
          geoXml.parseKmlString("<Placemark>"+kml+"</Placemark>");
          bounds.union(geoXml.docs[i].bounds);
      }    

          map.fitBounds(bounds);
    }
4

1 に答える 1

1

FusionTablesからKML文字列を解析するためにparseメソッドを使用しないでください(parseKmlStringメソッドはそれを行うためのものです)。

      var kml = FTresponse.getDataTable().getValue(i,ColIndex);
      geoXml.parseKmlString("<Placemark>"+kml+"</Placemark>");

注:FusionTablesに保存されているKMLフラグメントには、<Placemark>geoxml3が検索するタグが含まれていないため、geoxml3に渡される文字列に追加されます。

GVizクエリ応答には500行の制限があります(これは、私が見つけた場所では文書化されていないようです。私が見つけた最高のものは、この参照ですが、それ以降、文書化されています)。

FusionTables API v1.0を使用してそれを克服するために、テーブルでその制限に遭遇するようです。これは、KMLではなくGeoJSONを返します(したがって、geoxml3は不要になります)。

GVizとgeoxml3を使用してFusionTablesからKML「ポイント」をデコードする例(テーブルに含まれるポイントは500未満)

Fusion TablesAPIv1.0を使用してFusionTablesからマーカーを解析する例

于 2013-03-07T21:49:15.170 に答える