标记消失
Markers disappear
我试图在范围内时将标记设置为在地图上可见,而在不在范围内时设置为不可见。当我移动并进入区域时,标记会出现——但当我离开范围时,标记仍然可见。这是我的代码 onLocationUpdate
。
我遍历我的数据库并添加标记。 getDeviceLocation
return Ltglng
与我当前的位置。我也为 GPS 提供商实现了这一点。任何想法都会有所帮助!
locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Cursor res = activityA.myDB.getAllData();
while (res.moveToNext()) {
double ltd = Double.valueOf(res.getString(3));
double lng = Double.valueOf(res.getString(4));
LatLng hole = new LatLng(ltd, lng);
Marker marker = mMap.addMarker(new MarkerOptions().position(hole)
.title(res.getString(1)).visible(false));
if (SphericalUtil.computeDistanceBetween(getDeviceLocation(), marker.getPosition()) <3 ) {
marker.setVisible(true);
}
}
}
根据您提供的信息,我可以收集到这些信息。
您正在添加标记(最初设置为不可见),然后如果它符合您的 if 语句,则将其设置为不可见。问题是,我看不到任何可以让它们再次不可见或将其移除的地方。
您是否将这些标记保存在 activity 中?例如在 ArrayList 中?
我有两个建议:
1) 在 while 语句之前调用 mMap.clear() 。这将清除所有标记的地图,然后在创建新标记时添加它们。
2) 将所有标记保存在 ArrayList 中,然后在 onLocationChanged 中,使用 for 循环遍历所有标记并使超出范围的标记不可见。这是一个例子:
for (Marker marker: mMarkerArrayList) {
if (outOfRange()) {
marker.visible(false);
}
}
这里的 mMarkerArrayList 是包含所有标记的 ArrayList。 outOfRange() 是一个辅助函数,如果标记超出范围,returns 一个布尔值。
我试图在范围内时将标记设置为在地图上可见,而在不在范围内时设置为不可见。当我移动并进入区域时,标记会出现——但当我离开范围时,标记仍然可见。这是我的代码 onLocationUpdate
。
我遍历我的数据库并添加标记。 getDeviceLocation
return Ltglng
与我当前的位置。我也为 GPS 提供商实现了这一点。任何想法都会有所帮助!
locManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 1, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Cursor res = activityA.myDB.getAllData();
while (res.moveToNext()) {
double ltd = Double.valueOf(res.getString(3));
double lng = Double.valueOf(res.getString(4));
LatLng hole = new LatLng(ltd, lng);
Marker marker = mMap.addMarker(new MarkerOptions().position(hole)
.title(res.getString(1)).visible(false));
if (SphericalUtil.computeDistanceBetween(getDeviceLocation(), marker.getPosition()) <3 ) {
marker.setVisible(true);
}
}
}
根据您提供的信息,我可以收集到这些信息。
您正在添加标记(最初设置为不可见),然后如果它符合您的 if 语句,则将其设置为不可见。问题是,我看不到任何可以让它们再次不可见或将其移除的地方。
您是否将这些标记保存在 activity 中?例如在 ArrayList 中?
我有两个建议:
1) 在 while 语句之前调用 mMap.clear() 。这将清除所有标记的地图,然后在创建新标记时添加它们。
2) 将所有标记保存在 ArrayList 中,然后在 onLocationChanged 中,使用 for 循环遍历所有标记并使超出范围的标记不可见。这是一个例子:
for (Marker marker: mMarkerArrayList) {
if (outOfRange()) {
marker.visible(false);
}
}
这里的 mMarkerArrayList 是包含所有标记的 ArrayList。 outOfRange() 是一个辅助函数,如果标记超出范围,returns 一个布尔值。