当我的位置更改时,它会添加另一个标记,但不会删除上一个标记

时间:2017-09-25 03:32:47

标签: android google-maps google-maps-api-3 location google-maps-markers

我正在使用以下代码检查设备的当前位置。无论何时更改或刷新位置,它都会添加标记而不删除最后一个标记。如何删除以前的标记。

 if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {
                double latitude = location.getLatitude();
                double longtitude = location.getLongitude();
                LatLng latLng = new LatLng(latitude, longtitude);
                mMap.addMarker(new MarkerOptions().position(latLng).title("You Are Here"));
                mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10.2f));
            }

            @Override
            public void onStatusChanged(String s, int i, Bundle bundle) {
            }

            @Override
            public void onProviderEnabled(String s) {
            }

            @Override
            public void onProviderDisabled(String s) {
            }
        });
    }

还是有另一种获取当前位置的方法吗?感谢

3 个答案:

答案 0 :(得分:0)

保存addMarker方法返回的制造商对象,然后您可以使用marker.setPosition设置标记的新位置

答案 1 :(得分:0)

实际发生的是,每当调用locationchanged时,都会放置新标记但实际上在放置此标记之前,您应该清除地图。
您应该使用此mMap.clear();,如下面的代码所示。
public void onLocationChanged(Location location) { mMap.clear(); double latitude = location.getLatitude(); double longtitude = location.getLongitude(); LatLng latLng = new LatLng(latitude, longtitude); mMap.addMarker(new MarkerOptions().position(latLng).title("You Are Here")); mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10.2f)); }
这样,地图将被清除,其他标记也将被删除。
通过应用程序回答,抱歉格式化,稍后会编辑。

答案 2 :(得分:0)

试试这个

将标记对象声明为本地

 private Marker currentMarker;

请执行以下操作:

if(locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0, new LocationListener() {
@Override
public void onLocationChanged(Location location) {
        if(currentMarker!=null){
        currentMarker.remove();
        }
        double latitude = location.getLatitude();
        double longtitude = location.getLongitude();
        LatLng latLng = new LatLng(latitude, longtitude);
        currentMarker=mMap.addMarker(new MarkerOptions().position(latLng).title("You Are Here"));
        mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 10.2f));
        }

@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
        }

@Override
public void onProviderEnabled(String s) {
        }

@Override
public void onProviderDisabled(String s) {
        }
        });
        }