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