android - 如何在 Google Maps Android API v2 中直接将相机移动到当前位置?

标签 android

在不点击任何按钮的情况下,如何直接获取当前位置并将相机移动到该位置。
另外,我发现 map 的右上方有一个按钮。单击它时,它将转到当前位置。单击该按钮时如何获取返回的位置?

最佳答案

确保您拥有以下权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>

然后进行一些 Activity 并注册一个 LocationListener

package com.example.location;

import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.view.View;
import com.actionbarsherlock.app.SherlockFragmentActivity;
import com.google.android.gms.maps.CameraUpdate;
import com.google.android.gms.maps.CameraUpdateFactory;
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.SupportMapFragment;
import com.google.android.gms.maps.model.LatLng;

public class LocationActivity extends SherlockFragmentActivity implements LocationListener     {
private GoogleMap map;
private LocationManager locationManager;
private static final long MIN_TIME = 400;
private static final float MIN_DISTANCE = 1000;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.map);
    map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, MIN_TIME, MIN_DISTANCE, this); //You can also use LocationManager.GPS_PROVIDER and LocationManager.PASSIVE_PROVIDER        
}

@Override
public void onLocationChanged(Location location) {
    LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
    CameraUpdate cameraUpdate = CameraUpdateFactory.newLatLngZoom(latLng, 10);
    map.animateCamera(cameraUpdate);
    locationManager.removeUpdates(this);
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) { }

@Override
public void onProviderEnabled(String provider) { }

@Override
public void onProviderDisabled(String provider) { }
}

map.xml

<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>

关于android - 如何在 Google Maps Android API v2 中直接将相机移动到当前位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13756758/

相关文章:

java - 录制视频时启用相机闪光灯

android - 第一个项目中心在 RecyclerView 中的 SnapHelper 中对齐

java - 始终使用 dagger 2 初始化依赖关系,无需任何注入(inject)或提供

Android 自动完成 EditText 的背景颜色

android - 如何使用 ActionDone 按钮(不带 Enter 按钮)实现多行 EditText

android - 将图像导入Android Studio,图像显示为深灰色

Android Ksoap故障字符串问题

android - 使用 Crashlytics 发送自定义报告?

java - 如何将值事件监听器添加到实时数据库

java - gRPC protobuf 未使用 kotlin 构建进行编译 (Android Studio 3.0)