0

私は学ぶためにアンドロイドで小さなアプリケーションを開発しており、最終年度のプロジェクトとして開発しています。

これで、ユーザーの場所を見つけて、Google マップにマーカーを置きました。

しかし、今私はそれを取り除くことができません。

私はすでに 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