【发布时间】:2021-10-18 00:47:51
【问题描述】:
概述:应用程序在 Fragment 中有一个地图,Fragment 从房间数据库中检索标记的数据,然后将标记绘制到地图上。
问题:每当标记被绘制到地图上时,地图片段就会变得不稳定,并且在对点击无响应的点处,一旦标记被移除,地图的滞后就会得到修复。我不知道为什么标记使它变得不稳定,我怀疑这个问题与从数据库中加载标记有关,但这只是一个假设。
获取标记并将其绘制到地图上的方法。
private void drawMarker(){
if (markersAreDrawn == false){
markerViewModel.getAllMarkers().observe(MapFragment.this, new Observer<List<MarkerObject>>() {
@Override
public void onChanged(List<MarkerObject> markerObjects) {
for (MarkerObject markerObject : markerObjects) {
if (checkedItems[0] == true && markerObject.getCategory().equals("Nature")) {
mMap.addMarker(new MarkerOptions()
.position(new LatLng(markerObject.getLatitude(), markerObject.getLongitude()))
.snippet(markerObject.getDescription())
.title(markerObject.getTitle()));
}
if (checkedItems[1] == true && markerObject.getCategory().equals("Abandoned")){
mMap.addMarker(new MarkerOptions()
.position(new LatLng(markerObject.getLatitude(), markerObject.getLongitude()))
.snippet(markerObject.getDescription())
.title(markerObject.getTitle()));
}
if (checkedItems[2] == true && markerObject.getCategory().equals("Camping")){
mMap.addMarker(new MarkerOptions()
.position(new LatLng(markerObject.getLatitude(), markerObject.getLongitude()))
.snippet(markerObject.getDescription())
.title(markerObject.getTitle()));
}
if (checkedItems[3] == true && markerObject.getCategory().equals("Sightseeing")){
mMap.addMarker(new MarkerOptions()
.position(new LatLng(markerObject.getLatitude(), markerObject.getLongitude()))
.snippet(markerObject.getDescription())
.title(markerObject.getTitle()));
}
}
}
});
} markersAreDrawn = true;
}
然后在 OnViewCreated() 中调用的 OnMapReadyCallback 中执行 drawMarker() 方法。
我之前曾多次研究过这个问题,但我自己还没有弄清楚。 非常感谢任何和所有帮助。
【问题讨论】:
-
我们在谈论多少个标记?
-
目前大约有 20 个测试标记,但通过一些测试我发现问题出在逻辑上。
标签: android google-maps android-room google-maps-markers lag