0

我正在开发 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);
4

1 回答 1

0

在我看来,您的代码应该可以工作。我会尝试添加一些日志记录来验证 onLocationChanged,实际上正在被调用。

附带说明一下,您可以考虑只更新标记的位置,而不是删除它并添加一个新的。有关详细信息,请参阅文档

于 2013-09-24T11:31:23.347 回答