我想删除谷歌地图上的折线(Android)

时间:2016-04-04 01:12:56

标签: android google-maps polyline

我正在使用Google地图API创建应用。该应用程序在谷歌地图上绘制用户的步骤。我成功地实时绘制了用户的步骤。  按钮用于停止绘制线。所以,onClickListener中的insult方法。 这是我的代码

    private GoogleMap map;
    private PolylineOptions polylineOptions;
    private Polyline polyline;

    private LocationManager locationManager;
    private myLocation mylocation = new myLocation();

    private Button btn_clear, btn_start;

    private ArrayList<LatLng> testArray = new ArrayList<LatLng>();


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.test);

        btn_start = (Button) findViewById(R.id.btn_start);
        btn_start.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
                locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
                locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0,mylocation);
                return;
            }
        });
        btn_clear = (Button) findViewById(R.id.btn_clear);
        btn_clear.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                polyline.remove();
                map.clear();
                locationManager.removeUpdates(mylocation);
                Intent intent = new Intent(TEST.this, WalkResult.class);
                startActivity(intent);

            }
        });
        polylineOptions = new PolylineOptions();
    }

    public class myLocation implements LocationListener {

        @Override
        public void onLocationChanged(Location location) {
            LatLng spot = new LatLng(location.getLatitude(), location.getLongitude());

            testArray.add(spot);

            polyline = map.addPolyline(polylineOptions
            .add(testArray.get(0))
            .color(Color.DKGRAY));

            Log.d("Insult", "testArray : " + testArray.get(0));
            map.moveCamera(CameraUpdateFactory.newLatLngZoom(spot, 17));
            map.addPolyline(polylineOptions);

            testArray.remove(0);
        }

然而,Polyline.remove并没有删除线。我不明白为什么折线没有擦除。  所以,我使用&#39; polyline.getPoints&#39;在&#39; LocationListener&#39;找原因。这是结果。  

04-04 10:10:48.885 10661-10661/kr.co.wdream D/Removing?: polyline : [lat/lng: (37.4851513,126.8986154)]
04-04 10:10:57.695 10661-10661/kr.co.wdream D/Removing?: polyline : [lat/lng: (37.4851513,126.8986154), lat/lng: (37.4851387,126.8985779)]

04-04 10:11:30.325 10661-10661/kr.co.wdream D/Removing?: polyline : [lat/lng: (37.4851513,126.8986154), lat/lng: (37.4851387,126.8985779), lat/lng: (37.4851357,126.8985547), lat/lng: (37.4851495,126.8986224)]

是不是? 我能怎么做 ?请帮帮我。

1 个答案:

答案 0 :(得分:0)

好吧,我解决了这个问题。我认为这不是一个好的答案,但它是有效的。 我在'startActivity'之后使用'finish()'方法。当返回此活动(map活动)时,使用startActivity重新启动活动。 删除了所有折线的点数。感谢