android google map 定位
时间: 2023-07-11 17:48:07 浏览: 110
要在 Android 应用程序中使用 Google 地图进行定位,可以使用 Google Play Services SDK 提供的 Location APIs。首先,确保你的应用程序已经在 AndroidManifest.xml 文件中声明了使用定位权限:
```
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
```
然后,在你的代码中使用以下步骤:
1. 检查设备上是否安装了 Google Play Services,如果没有则提示用户安装。
2. 创建 GoogleApiClient 实例并连接到 Google Play Services。
3. 实现 LocationListener 接口并注册位置更新监听器。
4. 请求位置更新。
以下是示例代码:
```java
public class MapsActivity extends AppCompatActivity implements
GoogleApiClient.ConnectionCallbacks,
GoogleApiClient.OnConnectionFailedListener,
LocationListener {
private GoogleMap mMap;
private GoogleApiClient mGoogleApiClient;
private LocationRequest mLocationRequest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
// 检查 Google Play Services 是否可用
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext());
if (status != ConnectionResult.SUCCESS) {
Toast.makeText(getApplicationContext(), "Google Play Services Not Available", Toast.LENGTH_LONG).show();
finish();
}
// 创建 GoogleApiClient 实例
mGoogleApiClient = new GoogleApiClient.Builder(this)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.addApi(LocationServices.API)
.build();
// 创建 LocationRequest 实例
mLocationRequest = new LocationRequest();
mLocationRequest.setInterval(10000); // 定位更新间隔
mLocationRequest.setFastestInterval(5000);
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
}
@Override
protected void onStart() {
super.onStart();
mGoogleApiClient.connect();
}
@Override
protected void onStop() {
super.onStop();
if (mGoogleApiClient.isConnected()) {
mGoogleApiClient.disconnect();
}
}
@Override
public void onConnected(Bundle bundle) {
// 连接到 Google Play Services 成功
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, mLocationRequest, this);
}
@Override
public void onConnectionSuspended(int i) {
// 连接中断
}
@Override
public void onConnectionFailed(ConnectionResult connectionResult) {
// 连接失败
}
@Override
public void onLocationChanged(Location location) {
// 收到位置更新
mMap.clear();
LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
mMap.addMarker(new MarkerOptions().position(latLng).title("Current Location"));
mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
mMap.animateCamera(CameraUpdateFactory.zoomTo(15));
}
}
```
注意:在使用此代码之前,需要在项目中添加 Google Play Services SDK 和 Google Maps API。
阅读全文