2017-04-18 24 views
-3

我使用它被調用時MapActivity開始它實現OnMapReadyCallback onMapReady()函數。價值觀不會得到更新 - Android電子

它在其上項目的變化我刷新特定地區/國家的價值觀,它應該onPostExecute後得到體現在標題()頂部的微調。

所有的事情,直到onPostExecute()的AsyncTask的方法正常工作中,我再次調用onMapReady(MMAP)函數來顯示新的價值,但它不工作

下面是我的代碼

void callExchangeRateWebService() { 

     CommonMethods.showProgressDialog(MapsActivity.this, "", "Fetching Exchange Rates..."); 
     new WebServiceCallTask(MapsActivity.this, "" + MantraSoapLinks.URL2+((CountryBean)(mSpinner1.getSelectedItem())).getmCountrySymbol(),"", "GET", "" ,new WebServiceCallBack() { 
      @Override 
      public void onSuccess(Object result) throws JSONException { 
       CommonMethods.hideProgressDialog(MapsActivity.this); 
       JSONObject jObj = new JSONObject(result.toString()); 
       JSONObject ratesObj = jObj.getJSONObject("rates"); 
       String baseStr = jObj.getString("base"); 
       String temp = ratesObj.toString().replace("{",""); 
       temp = temp.toString().replace("}",""); 
       temp = temp.toString().replace("\"",""); 
       temp = temp.toString().replace("\"",""); 

       String[] str= temp.split(","); 
       ArrayList<String> arry = new ArrayList<String>(); 
       for (int i = 0 ;i <str.length;i++) 
       { 
        arry.add(str[i]); 
       } 
       arry.add(baseStr+":1"); 

       String [] str1 = new String[arry.size()]; 
       for (int i = 0 ;i <arry.size();i++) 
       { 
        str1[i] = arry.get(i).toString(); 
       } 

       for(int i = 0 ; i<str1.length ; i++) 
       { 
        CountryBean cn = new CountryBean(); 
        cn.setmCountrySymbol((str1[i].split(":"))[0]); 
        cn.setmCurrencyValueMap((str1[i].split(":"))[1]); 
        db.updateCountryDetails(cn); 
       } 
       beanArry = db.getCountryDetails(); 
       onMapReady(mMap); 

      } 

      @Override 
      public void onFailed(Object result) { 

       CommonMethods.hideProgressDialog(MapsActivity.this); 
      } 
     }).execute(); 

    } 

onMapReady()函數

public void onMapReady(GoogleMap googleMap) { 
     mMap = googleMap; 

     /*// Add a marker in Sydney and move the camera 
     LatLng sydney = new LatLng(-34, 151); 
     mMap.addMarker(new MarkerOptions().position(sydney).title("Marker in Sydney")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney)); 


     LatLng testindiA = new LatLng(-20, 150); 
     mMap.addMarker(new MarkerOptions().position(testindiA).title("Yatin Test")); 
     mMap.moveCamera(CameraUpdateFactory.newLatLng(testindiA));*/ 

     for (int i = 0;i<beanArry.size();i++) 
     { 
      LatLng ltLn = null; 
      if(beanArry.get(i).getmLatitude()!=null) { 
       ltLn = new LatLng(Double.parseDouble(beanArry.get(i).getmLatitude()), Double.parseDouble(beanArry.get(i).getmLongitude())); 

       mMap.addMarker(new MarkerOptions().position(ltLn).title(beanArry.get(i).getmCountryName()+" "+beanArry.get(i).getmCurrencyValueMap())); 


       String str = beanArry.get(i).getmCountryName(); 
       str = str.toLowerCase(); 
       str = str.replace(" ","_"); 
       String PACKAGE_NAME =getApplicationContext().getPackageName(); 
       int imgId = getResources().getIdentifier(PACKAGE_NAME+":drawable/"+str , null, null); 
       if(imgId!=0) { 
        BitmapDescriptor icon = BitmapDescriptorFactory.fromResource(imgId); 
        mMap.addMarker(new MarkerOptions().position(ltLn).icon(icon)); 
       } 
       else 
       { 
        mMap.addMarker(new MarkerOptions().position(ltLn).icon(null)); 
       } 


       mMap.moveCamera(CameraUpdateFactory.newLatLng(ltLn)); 
      } 
     } 

    } 
+1

你不必調用'onMapReady(mMap);'。只需正常添加標記並自行刷新,或者調用'mMap.clear();',然後添加標記。 –

+0

可以使用mMap.clear() – Yatin

回答

0

更新地圖之前錯過了mMap.clear()