上のユーザーの場所を更新することはできません。アンドロイドは - 私は、ユーザーの場所を更新しようとしてこだわっている活動の打ち上げ
私のアプリでは、地図のユーザーの現在地を表示しますが、locationManager.getLastKnownLocation()
はキャッシュの場所を使用しているため別の場所 を返しています。私は、コールバックOnMapReady
にマップ上の正しい位置にマークを付けることができるように
は、どのように私は、現在の場所で最後の既知の位置を比較することができますか?私はStackOverflowので見つかった
すべての例では、LocationListener.onLocationChanged()
メソッドを使用しているが、私は(必要な場合)の活動の立ち上げに場所を更新する必要があります。
コード:
private static final String TAG_MAP_LOAD_FAILED = "FAIL LOADING MAP STYLE";
private static final String TAG_MAP_PARSING_FAILED = "FAIL PARSING MAP STYLE";
private GoogleMap mMap;
private LatLng mMyCoordinates;
private LocationManager mLocationManager;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mLocationManager = (LocationManager) getContext().getSystemService(Context.LOCATION_SERVICE);
getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
try{
boolean success = googleMap.setMapStyle(MapStyleOptions.loadRawResourceStyle(getContext(), R.raw.style_mapjson));
if(!success){
Log.e(TAG_MAP_PARSING_FAILED, "Failed parsing JSON Style");
}
}catch (Resources.NotFoundException ex){
Log.e(TAG_MAP_LOAD_FAILED, "Can't find style. Error:", ex);
}
mMap.setIndoorEnabled(false);
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(mMyCoordinates);
markerOptions.title("Marker in my location");
mMap.addMarker(markerOptions);
CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(mMyCoordinates, 15);
mMap.moveCamera(cameraUpdate);
mMap.getUiSettings().setRotateGesturesEnabled(false);
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
OBS:それは失敗した試行のいっぱいになったので、私はコードをクリーンアップ。それがどのように構造化されているかを示します。
は、私が代わりにFusedLocation
を使用する必要がありますか?
はい。 'LocationManager'は別の実装を使用していますし、' GoogleMap'を使って接続コールバックを取得することはできません。あなたはそのアイディアをどこから得ましたか?それにはAPIクライアントが必要です。 [公式ドキュメント](https://developers.google.com/maps/documentation/android-api/start)ではなく、SOで最初に回答を探すのは、別のフォーラムの問題です。最後まで読んでみると、これを解決することができます。そして、拒否コードを使用しない限り、 'FusedLocation'を使用してください。 – Chisko