无法从谷歌地图中删除标记

时间:2013-09-24 11:21:17

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

我正在开发android中的小应用程序来学习和作为我去年的项目。

在我找到的用户位置并在谷歌地图中放置一个标记。

但现在我无法删除它。

我已经尝试过Clear()方法和remove()方法。

这是我的代码。

getUserLocation();

Toast.makeText(this, "Latitude:" + lat + " Longitude:" + lang,
                Toast.LENGTH_LONG).show();

getAddress(lat, lang);

drawMarker(lat, lang);

这是我在oncreate()方法中编写的代码。

现在这是功能代码。

private void getUserLocation() {

    location_manager = (LocationManager) getSystemService(LOCATION_SERVICE);
    if (location_manager != null) {
        provider = location_manager.getBestProvider(criteria, true);
        location = location_manager.getLastKnownLocation(provider);
        location_manager.requestLocationUpdates(provider,
                Map.MIN_TIME_BW_UPDATES,
                Map.MIN_DISTANCE_CHANGE_FOR_UPDATES, this);
        if (location != null) {
            lat = location.getLatitude();
            lang = location.getLongitude();
        } else {

            Toast.makeText(Map.this, "Unable to idntify location",
                    Toast.LENGTH_LONG).show();

            lat = -22.00000;
            lang = -33.0000;

        }
    }
}

@Override
public void onLocationChanged(Location location) {

    mlocationMarker.remove();
    google_map.clear();
    drawMarker(lat, lang);

}

private void drawMarker(double lattitude, double longitude) {

    google_map.setMyLocationEnabled(true);

    LatLng latlng = new LatLng(lattitude, longitude);

    google_map.moveCamera(CameraUpdateFactory.newLatLng(latlng));
    google_map.animateCamera(CameraUpdateFactory.zoomTo(15));

    LatLng currentPosition = new LatLng(lattitude, longitude);
    mlocation = new MarkerOptions();
    mlocation.position(currentPosition);
    mlocation.snippet("Address:" + addresses.get(0).getAddressLine(0)
            + "City:" + addresses.get(0).getAddressLine(1) + "Country:"
            + addresses.get(0).getAddressLine(2));
    mlocation.icon(BitmapDescriptorFactory
            .defaultMarker(BitmapDescriptorFactory.HUE_GREEN));
    mlocation.title("ME");
    mlocationMarker = google_map.addMarker(mlocation);
}

在这里我能够找到位置并放置标记,但在onlocationChanged()中它不起作用我不知道如何解决它。

这是我的更新行请求。

location_manager.requestLocationUpdates(provider,
                Map.MIN_TIME_BW_UPDATES,
                Map.MIN_DISTANCE_CHANGE_FOR_UPDATES, this);

1 个答案:

答案 0 :(得分:0)

在我看来,你的代码应该可行。我会尝试添加一些日志记录来验证onLocationChanged是否实际被调用。

另外,您可以考虑更新标记的位置,而不是删除标记并添加新标记。有关详细信息,请参阅the docs