-2
我正在開發一個應用程序,我正在使用地圖。我希望儘快打開我的應用程序,它應該會自動放大以顯示我在地圖上的位置,但目前發生的情況是地圖可見,但當前位置不會自動顯示。在我點擊右上角的MyLocationButton後顯示。因此,如何將上述功能在我的代碼如何在打開我的應用程序時自動將地圖顯示到我的當前位置?
我正在開發一個應用程序,我正在使用地圖。我希望儘快打開我的應用程序,它應該會自動放大以顯示我在地圖上的位置,但目前發生的情況是地圖可見,但當前位置不會自動顯示。在我點擊右上角的MyLocationButton後顯示。因此,如何將上述功能在我的代碼如何在打開我的應用程序時自動將地圖顯示到我的當前位置?
使一類項目,並複製該代碼
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.IBinder;
import android.support.annotation.Nullable;
import android.util.Log;
public class AppLocationService extends Service implements LocationListener {
protected LocationManager locationManager;
Location location;
private static final long min_distance_forupdate = 10;
private static final long min_time_to_update = 2 * 60 * 1000;
public AppLocationService(Context context) {
locationManager = (LocationManager) context.getSystemService(LOCATION_SERVICE);
}
public Location getLocation(String provider) {
if (locationManager.isProviderEnabled(provider)) {
try {
locationManager.requestLocationUpdates(provider, min_time_to_update, min_distance_forupdate, this);
if (locationManager != null) {
location = locationManager.getLastKnownLocation(provider);
return location;
}
}catch (SecurityException r){
Log.d("loc",r.getMessage());
}
return location;
}
return location;
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onLocationChanged(Location location) {
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
}
然後在onMapReady功能使用Google地圖,活動驗證碼
mMap = googleMap;
appLocationService = new AppLocationService(MapsActivity.this);
Location newlocation = appLocationService.getLocation(LocationManager.NETWORK_PROVIDER);
if (newlocation != null) {
double curlat = newlocation.getLatitude();
double curlog = newlocation.getLongitude();
Log.d("latitude", curlat + " ----" + curlog);
LatLng sydney = new LatLng(curlat, curlog);
mMap.addMarker(new MarkerOptions().position(sydney).title("Your location"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(sydney));
LatLng coordinate = new LatLng(curlat, curlog);
CameraUpdate yourLocation = CameraUpdateFactory.newLatLngZoom(coordinate, 5);
mMap.animateCamera(yourLocation);
CameraPosition cameraPosition = new CameraPosition.Builder()
.target(new LatLng(curlat, curlog)) // Sets the center of the map to location user
.zoom(17) // Sets the zoom
.bearing(90) // Sets the orientation of the camera to east
.tilt(40) // Sets the tilt of the camera to 30 degrees
.build(); // Creates a CameraPosition from the builder
mMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
感謝名單很多朋友 –
如果出現任何問題請問我否則標記我的回答 – Hami
標記答案plz – Hami