我正在尝试构建一个显示设备当前位置的Android应用程序。到目前为止,我获得了地图中的位置(使用GPS)并能够显示当前位置。现在我想在那里放一个标记,但我无法找到纬度和经度的值,以便我可以将它传递给
mMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker"));
PS:我是android开发的初学者所以请解释一下,我正在使用android studio。
答案 0 :(得分:2)
首先使用api FusedLocationApi
获取Latlng
,然后只需编写handleNewLocation
方法来处理LatLng
,并在地图上添加标记。
示例代码:
private void handleNewLocation(Location location) {
Log.d(TAG, location.toString());
double currentLatitude = location.getLatitude();
double currentLongitude = location.getLongitude();
LatLng latLng = new LatLng(currentLatitude, currentLongitude);
MarkerOptions options = new MarkerOptions()
.position(latLng)
.title("I am here!");
mMap.addMarker(options);
}
对于whole project
source code
,请参考我的github here,您can clone it and try it
,它将符合您的要求。
如果您有任何其他问题,请随时与我联系。
答案 1 :(得分:0)
我所做的是实现com.google.android.gms.common.api.GoogleApiClient.ConnectionCallbacks,OnConnectionFailedListener。 创建一个GoogleApiClient字段并从onCreate
调用以下方法 protected synchronized void buildGoogleApiClient() {
Toast.makeText(this, "buildGoogleApiClient", Toast.LENGTH_SHORT).show();
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API).build();
mGoogleApiClient.connect();
}
当您的活动在上面的接口上实施时,您将拥有以下方法,并且从onConnected您可以获得当前位置
public void onConnectionFailed(ConnectionResult arg0) {
Toast.makeText(this, "connection failed", Toast.LENGTH_SHORT).show();
}
@Override
public void onConnected(Bundle arg0) {
Toast.makeText(this, "in onconnected of location services",
Toast.LENGTH_SHORT).show();
mLastLocation = LocationServices.FusedLocationApi
.getLastLocation(mGoogleApiClient);
}
您可以使用mLastLocation.getLatitude和.getLongitude