当我在范围内时,我试图设置在地图上可见的标记,当我不在范围时设置不可见的标记。当我移动和输入区域标记出现时--但是当我离开范围标记时仍然是可见的。这是我的代码onLocationUpdate。我遍历我的数据库并添加标记。getDeviceLocation用我的当前位置返回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);
}
}
}发布于 2018-04-16 16:26:25
根据你所提供的,这就是我能收集到的。
您正在添加标记(最初设置为不可见),然后如果它满足您的if语句,则使它们不可见。问题是,我没有看到任何地方,你会让他们再次隐形,或删除他们。
你在你的活动中保存这些标记吗?例如,在ArrayList中?
我有两个建议:
1)在while语句之前调用mMap.clear()。这将清除映射中的任何标记,然后在创建这些标记时添加新标记。
2)将所有标记保存在ArrayList中,然后保存在onLocationChanged中,使用for循环遍历所有标记,使超出范围的标记不可见。下面是一个示例:
for (Marker marker: mMarkerArrayList) {
if (outOfRange()) {
marker.visible(false);
}
}这里,mMarkerArrayList是包含所有标记的ArrayList。outOfRange()是一个助手函数,如果标记为outOfRange,则返回布尔值。
https://stackoverflow.com/questions/49861568
复制相似问题