0

我正在开发一个 Android 应用程序,它检索位置并通过 Restlet [1] 将其发送到 OData 服务器

在 Android 中,位置将经度和纬度设置为双精度。

double lat = location.getLatitude();

我的 Restlet / OData 服务:

public class LatLoc {

  private double latitude;

  public void setLatitude(double latitude) {
    this.latitude = latitude;
  }
}

OData $元数据:

<EntityType Name="locations">
    <Property Name="latitude" Type="Edm.Double"/>

负责添加实体的方法:(GeoService 是处理 Restlet 连接的类并实现方法 addEntity() )

public class LocTrans {
  GeoService proxy = new GeoService();
  void sendLoc(Location location) throws   Exception, Throwable {
    LatLoc locSend = new LatLoc();
    locSend.setLatitude(location.getLatitude());
    System.out.println("Lat")
    proxy.addEntity(locSend);
  }
}

以XX.XXXXXXXXXXXprintln形式显示“正常”纬度(“。”后至少有 6 位数字)

但是服务器会收到像 XX.XXX 这样的纬度;所以只有小数点后3位。

Restlet 的文档表明 Edm.Double 和原始数据类型 double 是等效的。

我的错误在哪里,双值在发送到服务器时被切断了?

[1] http://wiki.restlet.org/developers/172-restlet/267-restlet/271-restlet.html

4

1 回答 1

0

悲伤的答案:我还没有找到解决 Restlet 问题的方法。

我现在正在使用odata4j,这很有效。

void sendLocation(Location location, UUID uuid) throws Exception {
   OEntity newLocation = c.createEntity(entitySet)
     .properties(OProperties.guid("trackID", uuid.toString()),
     OProperties.double_("latitude", location.getLatitude()),
     .execute();

}

于 2013-01-28T12:48:38.720 回答