我正在使用Asyntask
来调用服务,返回1k至2k坐标(纬度,经度)。
当我使用for(...)
循环将它们添加为地图上的标记时,这会花费大量时间,并且UI线程的运行速度越来越慢。
我也尝试使用线程,但是没有运气。
我需要什么:使用后台进程添加标记而不影响UI线程
我的代码:
@Override
public void onMapReady(GoogleMap googleMap)
{
mMap = googleMap;
mMap.setMinZoomPreference(mMap.getCameraPosition().zoom);
LatLng hcmus = new LatLng(lat, lng);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(hcmus, 4));
mMap.getUiSettings().setMapToolbarEnabled(false);
mMap.getUiSettings().setZoomControlsEnabled(true);
originMarkers.add(mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(R.drawable.placeholder))
.title("Current Location")
.position(hcmus)));
if (ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getContext(), Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
mMap.setMyLocationEnabled(true);
new getLatLong().execute();
}
@Override
protected Void doInBackground(Void... params) {
addMarker = FacadeLatLong.getLatLong();
for (LatLng latlng : addMarker
) {
originMarkers.add(mMap.addMarker(new MarkerOptions()
.icon(BitmapDescriptorFactory.fromResource(R.drawable.flash))
.title("Lightning")
.position(latlng)));
}
return null;
}
}