面对IllegalArgumentException:使用google-api-services-mapsengine的密钥几何

时间:2014-06-17 11:32:26

标签: google-api-java-client google-maps-engine

我正在使用该库“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)

2 个答案:

答案 0 :(得分:1)

在找到错误之后,我发现了两件事: 1 / To"解决"它,您必须选择几何字段,如下代码:     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,几何&#34)                     .setWhere("邮件='&#34 + +电子邮件"'&#34);

2 /几个小时后,我发现了问题所在,它来自这个课程:     包com.google.api.services.mapsengine.model;     / **      * ........      * ........      * @author Google,Inc。      * /     @SuppressWarnings("的Javadoc&#34)     public final class功能扩展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+"'");

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

此致 的Sebastien

答案 1 :(得分:0)

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

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

编辑:哦,谷歌喜欢它,当你明星'这些错误表明你也受到影响。

EDIT2:此错误现已修复,因此请抓取最近版本的Maps Engine客户端库(rev44或更高版本),看看它是如何运行的。