0

Location を取得し、これを Restlet [1] 経由で OData サーバーに送信する Android アプリケーションを開発しています。

Android では、場所は経度と緯度を double に設定します。

double lat = location.getLatitude();

私の Restlet / OData サービス:

public class LatLoc {

  private double latitude;

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

OData $metadata:

<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);
  }
}

println、XX.XXXXXXXXXXX の形式で「通常の」緯度を示します (「.」の後に少なくとも 6 桁が必要です)。

しかし、サーバーは XX.XXX のような Latitude を受け取ります。小数点以下3桁のみです。

Restlet のドキュメントでは、Edm.Double とプリミティブ データ型の 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 に答える