Google map hang in slow speed internet connection,

2019-08-12 12:25发布

In one of my activity I am showing google map in fragment. It's working fine with 3g or high speed internet connection. But in 2g or very slow internet connection it's hang my mobile, And after some time I get 'not responding' message. Is there any way by which i can handle this situation?

Here is my working code:-

 public class MapLoader extends FragmentActivity implements View.OnClickListener {
  // GUI Widget
TextView lblNumber;
Button btnCall;
String number;
GoogleMap googleMap;
Bitmap myBitmap;
private String filePath;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mapload);

    // Getting reference to the SupportMapFragment of activity_main.xml
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);

    // Getting GoogleMap object from the fragment
    googleMap = mapFragment.getMap();
    googleMap.clear();
    String filterAddress = "";
    double lat=0;
    double lng=0;
    String ontime="";
    try {
        UserFunctions userFunction = new UserFunctions();
        JSONObject json = userFunction.getUserData(number);
        if(json.has("user")) {
            JSONArray android_version_array = json.getJSONArray("user");
            //getting android version
            for (int i = 0; i < android_version_array.length(); i++) {
                // creating new HashMap
                HashMap<String, String> map = new HashMap<String, String>();
                JSONObject myObj = android_version_array.getJSONObject(i);
                String lattiude = myObj.getString("latitude");
                String logitude = myObj.getString("longitude");
                ontime=myObj.getString("gpsTime");
                lat = Double.parseDouble(lattiude);
                lng = Double.parseDouble(logitude);
                // adding each child node to HashMap key => value
            }

            Geocoder geoCoder = new Geocoder(
                    getBaseContext(), Locale.getDefault());
            try {
                List<Address> addresses = geoCoder.getFromLocation(
                        lat,
                        lng, 1);

                if (addresses.size() > 0) {
                    for (int index = 0;
                         index < addresses.get(0).getMaxAddressLineIndex(); index++)
                        filterAddress += addresses.get(0).getAddressLine(index) + " ";

                }
                //  SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map);
                //  mapFragment.getView().findViewById()
                TextView a = (TextView) findViewById(R.id.test);
                a.setText(filterAddress);
            } catch (IOException ex) {
                ex.printStackTrace();
            } catch (Exception e2) {
                // TODO: handle exception

                e2.printStackTrace();
            }

             // Creating an instance of MarkerOptions to set position
            MarkerOptions markerOptions = new MarkerOptions();

            LatLng LOCATION = new LatLng(lat, lng);
            // Setting position on the MarkerOptions
            markerOptions.position(LOCATION);

            // Animating to the currently touched position
            // googleMap.animateCamera(CameraUpdateFactory.newLatLng(LOCATION),17.0f);
            googleMap.animateCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(lat, lng), 17.0f));

            // Adding marker on the GoogleMap
            Marker marker = googleMap.addMarker(markerOptions);
            // Showing InfoWindow on the GoogleMap
            marker.showInfoWindow();

   }catch (Exception e){
        e.printStackTrace();
     }
  }
 }

NOTE:- It's not a full code. I removed some of code for security reason.

1条回答
ら.Afraid
2楼-- · 2019-08-12 12:57

getMap() is deprecated. You should use getMapAsync() and avoid to wait on the UI thread.

查看更多
登录 后发表回答