1

我正在使用这个库“google-api-services-mapsengine”(版本 1.18.0-rc),当我尝试使用以下代码在 Google Maps Engine 上进行选择时:

com.google.api.services.mapsengine.MapsEngine.Tables.Features.List aRequest = myObj.getInstance().mapsEngine.tables().features().list(ASSET_ID_USER).setMaxResults((long) 1000)
                    .setSelect("num_dept")
                    .setWhere("mail='"+email+"'");

我面临这个问题:

java.lang.IllegalArgumentException: key geometry
    at com.google.api.client.json.JsonParser.parseValue(JsonParser.java:871)
    at com.google.api.client.json.JsonParser.parse(JsonParser.java:374)
    at com.google.api.client.json.JsonParser.parse(JsonParser.java:347)
    at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:87)
    at com.google.api.client.json.JsonObjectParser.parseAndClose(JsonObjectParser.java:81)
    at com.google.api.client.http.HttpResponse.parseAs(HttpResponse.java:459)
    at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.execute(AbstractGoogleClientRequest.java:460)
4

2 回答 2

1

找出问题所在后,我发现了两件事:1/要“解决”它,您必须像以下代码一样选择几何字段:com.google.api.services.mapsengine.MapsEngine.Tables.Features.List aRequest = SocleGme.getInstance().mapsEngine.tables().features().list(ASSET_ID_USER).setMaxResults((long) 1000) .setSelect("num_dept,geometry") .setWhere("mail='"+email+"'" );

2 /几个小时后,我发现了问题所在,它来自这个类:package com.google.api.services.mapsengine.model; /** * ........ * ........ * @author Google, Inc. */ @SuppressWarnings("javadoc") public final class Feature extends com.google.api.client. json.GenericJson {

  /**
   * The geometry member of this Feature.
   * The value may be {@code null}.
   */
  @com.google.api.client.util.Key
  private GeoJsonGeometry geometry;

您必须评论此行@com.google.api.client.util.Key才能使此代码正常工作:

com.google.api.services.mapsengine.MapsEngine.Tables.Features.List aRequest = myObj.getInstance().mapsEngine.tables().features().list(ASSET_ID_USER).setMaxResults((long) 1000)
                        .setSelect("num_dept")
                        .setWhere("mail='"+email+"'");

直接在库中修复它可能是一件好事。

问候,塞巴斯蒂安

于 2014-06-17T11:32:25.660 回答
0

这是此错误的一个实例:https ://code.google.com/p/google-api-java-client/issues/detail?id=867 。

同时,最好的解决方法是在您的选择字符串中包含“geometry”,或者完全省略它。不要更改生成的客户端库,因为您可能无法在不修改代码的情况下升级到未来版本,并且您可能会发现意外的副作用 - 在这种情况下,您可能根本无法检索几何字段。

编辑:哦,当你给错误加注星标以表明你也受到影响时,谷歌喜欢它。

EDIT2:此错误现已修复,因此请获取最新版本的 Maps Engine 客户端库(rev44 或更高版本)并查看它的运行情况。

于 2014-06-18T04:57:20.273 回答