使用Android Realm存储LatLng

时间:2016-11-09 10:18:54

标签: android realm

在Realm中存储包含Google的LatLng对象的RealmObject有什么更清晰的东西?

Area {
Latlat coord;
String name
}

2 个答案:

答案 0 :(得分:1)

虽然将数据保存为对象似乎很自然

LatLng { 
 double lat; 
 double lng; 
}

记住Realm是一个对象存储 - 如果你创建一个对象,它将存储在一个表(实体)中。正如Mohammed Ra所建议的那样(在上面的评论中),你应该存储一个包含纬度和经度字段的对象,两者都是双

class Area extends RealmObject {
  double lat; 
  double lng;
  String name;
  ...
}

此解决方案还提高了涉及坐标的查询的性能 - 在这种情况下,您应该在其上添加@Index注释。

答案 1 :(得分:0)

您可以像这样在Java中创建模型:

public class ActionDataModel extends RealmObject
{
  private LocationDataModel targetLatLong;

  @NonNull
  public LatLng getTargetLatLong()
  {
    return new LatLng(targetLatLong.getLatitude(), targetLatLong.getLongitude());
  }

  public void setTargetLatLong(@NonNull LatLng targetLatLong)
  {
    this.targetLatLong = new LocationDataModel(targetLatLong);
  }

}

这是kotlin中的父模型:

open class LocationDataModel(latLng: LatLng? = null)
: RealmObject() {
  var latitude = latLng?.latitude
  var longitude = latLng?.longitude
}