Несколько идей здесь:
import com.google.datastore.v1.Value;
public class EntityHelper {
public static Value makeValue(final Long value) {
Value.Builder builder = Value.newBuilder();
builder.setIntegerValue(value);
return builder.build();
}
}
Во-первых, вы устанавливаете длинное целое число. По определению это может привести к потере данных, поскольку long составляет 8 байтов, а целое число составляет 4 байта.
Вы можете попробовать установить тип в тип, который будет совместим с тем, который вы пытаетесь использовать.
Обычно широта и долгота представлены в виде двойных чисел. Надеюсь, это поможет вам устранить неполадки.
Я не уверен, какой объект LatLng вы используете, но вот пример
[https://developer.android.com/reference/androidx/car/cluster/navigation/LatLng]
В качестве примера вы можете попробовать это:
import com.google.datastore.v1.Value;
public class EntityHelper {
public static Value makeValue(final Double value) {
Value.Builder builder = Value.newBuilder();
builder.setDoubleValue(value);
return builder.build();
}
}
Я не уверен относительно вашей реализации, однако другой вариант будет использовать LatLng.Builder getGeoPointValueBuilder ()
В этом примере , вы бы реализовали что-то вроде следующего:
... потребуется другой импорт ...
import com.google.datastore.v1.Value;
public class EntityHelper {
public static LatLng makeLatLng(final LatLng value) {
LatLng.Builder builder = LatLng.Builder.newBuilder();
builder.setLatLng(value);
return builder.build();
}
}
Как я уже сказал, я не уверен, какой API вы используете, но возможно поищите здесь, чтобы адаптировать ваше решение:
[http://googleapis.github.io/googleapis/java/all/latest/apidocs/com/google/type/LatLng.html]