【发布时间】:2020-11-28 18:01:19
【问题描述】:
应用程序从 assets 文件夹中复制一个预先填充的数据库,并从那里获取每一列的数据并将其存储在数组列表中,然后从那里在地图上绘制标记。
现在我需要一种方法,如果标记位于设备的某个范围内,则该方法可以将预先存在的数据列(称为“活动”)的值从 0 更改为 1。我写的方法只添加了大约 40 行新的信息,其中“活动”列的数据为“1”,其余为 NULL,但不影响以前的数据。
如何在设备范围内的右侧标记数据的行上将“活动”列更改为 1?我希望我写了它以便你能理解。我大致知道如何根据需要更改特定行的列信息,但由于我需要获取取决于当时设备位置的特定行,所以我不知道该怎么做。
Databasehelper 到目前为止更新列的方法
public void setActive()
{
SQLiteDatabase db = this.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("active", 1);
db.update(TABLE_NAME, cv, "id= ?",null );
}
Mainactivity,一种检查位置是否在范围内的方法。它有一个额外的方法,使用计时器每 10 秒检查一次位置是否在范围内。
fusedLocationProviderClient.getLastLocation()
.addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
// Got last known location. In some rare situations this can be null.
if (location != null) {
Double lat = location.getLatitude();
Double lon = location.getLongitude();
LatLng latlon = new LatLng(lat, lon);
for (MyLatLngData location1 : locations) {
LatLng loc1 = new LatLng(location1.getLatitude(),location1.getLongitude());
if (SphericalUtil.computeDistanceBetween(latlon, loc1) < 1000) {
databaseHelper.setActive();
提前致谢。
【问题讨论】:
标签: java android sqlite google-maps