2016-12-23 12 views
0

Googleマップを使用してタクシーのようなアプリを開発しています。ピックアップとドロップの場所があり、ボタン(GO)をクリックするとそれらの間のルートが描画されます。 This is my activityAndroid GoogleマップのポリラインがRAMをクリアせずに描画されない

私は共有設定で最後に知られている場所を保存しています。アプリをもう一度開くと、最後の既知の場所がピックアップ場所になります。私は再びアプリを開くと、

the route is not getting drawnが、ルートデータムは、Googleからダウンロードされる:

私の問題はです。 LatLngデータもnullではありません。

しかし、私は自分の携帯電話のラムを解放し、私のアプリを開くと、非常に驚​​くべきことには、は、ALAS ITワークス!!!!

物事私がこれまで行ってきた:

1.Iはゴミにしようとしたが(onDestroy()で、ルートを描画する前に、ルート、最初に描画した後)を収集.ITはしませんでした作業。

2.私はアプリケーションキャッシュをクリアしようとしましたが、共有環境設定で保存した最後の場所を含むすべてのアプリケーションデータが削除されました。アプリケーションは毎回最初から起動します(i、毎回など。)

3.私の共有しているprefを除くすべてのデータを削除しようとしましたが、成功しませんでした。

Goボタンをクリックしたときにルートデータをダウンロードした後に呼び出されるコードです。

public void processFinish(List<List<HashMap<String, String>>> result) { 
    Log.d("sri","processFinish in Map_Activity"); 


    Route_Extras.getting_json = false; 

    ArrayList<LatLng> points = null; 
    PolylineOptions polylineOptions = null; 
    MarkerOptions markerOptions = new MarkerOptions(); 
    if(result != null) { 

    if(result.size()<1){ 
     Toast.makeText(getBaseContext(), "No Points",Toast.LENGTH_SHORT).show(); 
     return; 
    } 

     //iterating routes 
     for (int i = 0; i < result.size(); i++) { 

      Log.d("sri", "Iterating routes " + distance); 
      points = new ArrayList<LatLng>(); 
      polylineOptions = new PolylineOptions(); 

      //getting the individual route 
      List<HashMap<String, String>> path = result.get(i); 

      Log.d("sri", "Iterating every points in legs and steps " + distance); 

      // Fetching all the points in i-th route 
      for (int j = 0; j < path.size(); j++) { 
       HashMap<String, String> point = path.get(j); 


       if (j == 0) { // Get distance from the list 
        distance = (String) point.get("distance"); 
        Log.d("sri", "Iterating leg " + j + "" + "distance is " + distance); 
        // dist += Double.valueOf(distance); 
        continue; 
       } 
       else if (j == 1) { // Get duration from the list 
        duration = (String) point.get("duration"); 
        Log.d("sri", "Iterating leg " + j + "" + "duration is " + duration); 
        // dur += Double.valueOf(duration); 
        continue; 
       } 

       double lat = Double.parseDouble(point.get("lat")); 
       double lng = Double.parseDouble(point.get("lng")); 

       LatLng position = new LatLng(lat, lng); 

       points.add(position); 

      }//path -->leg 

      // Adding all the points in the route to LineOptions 
      Log.d("sri", "Adding all the points in the route to LineOptions"); 
      polylineOptions.addAll(points); 
      polylineOptions.width(6); 
      polylineOptions.color(Color.BLUE); 

     }//route 

     Log.d("sri", "Drawing polyline in the Google Map "); 


     // Drawing polyline in the Google Map for the i-th route 
     if(polylineOptions!=null){   
     pline = mGoogleMap.addPolyline(polylineOptions); 
      if(pline != null){ 
       Log.d("sri", "if(pline!=null)"); 
      } 

      Log.d("sri", "if(polylineOptions!=null)"); 
     } 

      else{ 
      Log.d("sri", "if(polylineOptions == null)"); 
     } 
    } 
}//process 

私は最後の10日以来、この問題に直面し、それを少なくとも100回をGoogleで検索し、解決策を見つけていないので、SOOでそれを掲示しています。

答えて

0

これを試してみてください:答えのための

PolylineOptions rectLine = new PolylineOptions().width(15).color(ContextCompat.getColor(this,R.color.map_route)); 
    for (int i = 0; i < directionPoints.size(); i++) { 
     rectLine.add(directionPoints.get(i)); 
    } 
    if (newPolyline != null) { 
     newPolyline.remove(); 
    } 
    newPolyline = map.addPolyline(rectLine); 
+0

感謝をsukumar.But残念ながら、そのどれでも他の提案を!!動作していませんか? – adi

+0

私もキャブタイプのアプリで働いています。このコードは私のために働きます。 – sukumar

関連する問題