2015-06-07 3 views
0

В одном из моих действий я показываю google-карту в фрагменте. Он отлично работает с 3-х или высокоскоростным подключением к Интернету. Но в 2g или очень медленном подключении к Интернету это повесит мой мобильный телефон, и через некоторое время я получаю сообщение «не отвечаю». Есть ли способ, которым я могу справиться с этой ситуацией?Google map висит в медленном интернет-соединении, Android

Вот мой рабочий код: -

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(); 
    } 
    } 
} 

Примечание: - Это не полный код. Я удалил код из соображений безопасности.

ответ

2

getMap() устарел. Вы должны использовать getMapAsync() и избегать ожидания потока пользовательского интерфейса.

+0

Спасибо, но когда я использую getMapAsync, его показ не может решить метод getMapAsync. – neooo

+0

Возможно, вы используете очень старую версию библиотеки, вам нужно обновить ее до последней версии. – greywolf82

+0

Я использую эту компиляцию 'com.google.android.gms: play-services: 4.3.23' – neooo

 Смежные вопросы

  • Нет связанных вопросов^_^