Google map hang in slow speed internet connection, Android

自古美人都是妖i 提交于 2019-12-11 13:58:47

问题


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:


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



来源:https://stackoverflow.com/questions/30691604/google-map-hang-in-slow-speed-internet-connection-android

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!