Search code examples
javaosmdroidandroid-event

osm store drawn path in database


Scenario:Using OSM in android ,user draws the path manually on map and clicks on save button, to save in database as a string.

        Polyline myPolyline;

      /*
          updating myPolyline  here
      */

      SavePathButton.setOnClickListener(new View.OnClickListener() 
      {
        public void onClick(View arg0) 
        {   
                String tempGeoPointString="Begin";
                String fullPathStore="Begin ";
            List<GeoPoint> myPathPoints=new ArrayList<GeoPoint>(myPathOverLay.getNumberOfPoints());
            Collections.copy(myPathPoints, (myPolyline.getPoints()));   
            for (int i = 0; i < myPathPoints.size(); i++) 
            {
                    GeoPoint tempGeoPoint = myPathPoints.get(i);
                    tempGeoPointString=     String.valueOf(tempGeoPoint.getLatitude())+"#"+String.valueOf(tempGeoPoint.getLongitude());
                    fullPathStore=fullPathStore+tempGeoPointString;

            }
        }

    Log.d("Full Path is ",fullPathStore);
    Log.d("PolyLine Size",myPolyline.getNumberOfPoints());
    Log.d("PathPoints size",myPathPoints.size()
    });

Here's reference to Polyline class

myPolyline.getNumberOfPoints() is non zero,but the fullPathStore is not updated and myPathPoints.size() remains zero in the log. Collecions.copy is not used correctly?


Solution

  • I'm not sure that "Collections.copy(myPathPoints, (myPolyline.getPoints()));" copies properly GeoPoints.

    But myPolyline.getPoints() already provides a copy of the polyline points. So don't copy it again, wasting time and memory. Just do:

    List<GeoPoint> myPathPoints = myPolyline.getPoints();