在Realm中存储包含Google的LatLng对象的RealmObject有什么更清晰的东西?
Area {
Latlat coord;
String name
}
答案 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
}