0

我正在慢慢弄清楚如何使用 v1 api 的点点滴滴,到目前为止,我可以使用服务帐户成功进行身份验证、列出和创建表以及操作表权限。我目前正在尝试以编程方式设置表格样式,但我从服务器收到了 400 个错误请求。我真的不清楚如何生成有效的样式请求,文档根本不清楚。我的表只包含折线,我希望颜色和重量来自两个特定的列。

这是我的代码:

$resp = $fusionTables->style->insert($id, new Google_StyleSetting(array(
  "polylineOptions"=> new Google_LineStyle(array(
    "strokeColorStyler" => new Google_StyleFunction(array(
      "kind" => "fromColumn",
      "columnName" => "color"
  )),
  "strokeWeightStyler"=> new Google_StyleFunction(array(
    "kind" => "fromColumn",
    "columnName" => "width"
    ))
  )),
  "isDefaultForTable" => false
  ))
);

使用 API 文档时,我只需要为 polylineOptions 提供两个样式器似乎是合理的。这与参考 api 文档有些不一致,该文档似乎表明有 6 个必需参数来为所有可能的样式器指定列名,这似乎是错误的。无论如何,我确实尝试了一个使用样式器配置点、线和多边形的版本,如参考文档所示,但一无所获。我还尝试提供其他可选值,包括样式名称和 tableId。

任何指针将不胜感激。

4

2 回答 2

1

原来我比我想象的更接近。仔细阅读文档,似乎样式器的“种类”属性必须fusiontables#fromColumn而不是fromColumn.

于 2012-09-10T16:43:35.683 回答
0

最新的 PHP 客户端库 v2.0 已重命名这些类。所以现在的代码变成了:

$client = new Google_Client();
$client->setAuthConfig('oauth-credentials.json');
$client->addScope("https://www.googleapis.com/auth/fusiontables");

if (isset($_SESSION['access_token']) && $_SESSION['access_token']) 
{
    $client->setAccessToken($_SESSION['access_token']);  
    $service = new Google_Service_Fusiontables($client);
} 

$tableId = "{enter_your_table_id}";

$style = $service->style->insert($tableId, new Google_Service_Fusiontables_StyleSetting(array(
        'markerOptions' => new Google_Service_Fusiontables_PointStyle(array(
            "iconStyler" => new Google_Service_Fusiontables_StyleFunction(array(
                "kind" => "fusiontables#fromColumn",
                "columnName" => "markerColor"
            ))
        )),
        'polylineOptions' => new Google_Service_Fusiontables_LineStyle(array(
            "strokeColorStyler" => new Google_Service_Fusiontables_StyleFunction(array(
                "kind" => "fusiontables#fromColumn",
                "columnName" => "polylineStrokeColor"
            )),
            "strokeWeightStyler"=> new Google_Service_Fusiontables_StyleFunction(array(
                "kind" => "fusiontables#fromColumn",
                "columnName" => "polylineStrokeWeight"
            ))
        )),
        'polygonOptions' => new Google_Service_Fusiontables_PolygonStyle(array(
            "fillColorStyler" => new Google_Service_Fusiontables_StyleFunction(array(
                "kind" => "fusiontables#fromColumn",
                "columnName" => "polygonFillColor"
            )),
            "strokeColorStyler" => new Google_Service_Fusiontables_StyleFunction(array(
                "kind" => "fusiontables#fromColumn",
                "columnName" => "polylineStrokeColor"
            )),
            "strokeWeightStyler"=> new Google_Service_Fusiontables_StyleFunction(array(
                "kind" => "fusiontables#fromColumn",
                "columnName" => "polylineStrokeWeight"
            ))
        )),
        "isDefaultForTable" => true
        ))
    );

更多信息可以在这里找到:
(1)创建样式
(2)参考

于 2016-10-02T01:49:13.357 回答