如何在谷歌地图上添加倍数标记而不影响UI线程?

时间:2018-06-21 07:16:56

标签: android google-maps

我正在使用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;
    }

}

0 个答案:

没有答案