我是编码谷歌地图的新手, 我的问题是我如何控制用户手势拖动,放大和缩小。 因为我的代码总是在我放大/缩小时回到用户的当前位置,当我向上,向下,向左,向右拖动/向上滚动时。总是回到现在的位置。
它是我当前loc用户的代码
private GoogleMap.OnMyLocationChangeListener myLocationChangeListener = new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
LatLng loc = new LatLng(location.getLatitude(), location.getLongitude());
mMarker = mMap.addMarker(new MarkerOptions().position(loc));
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16));
}
};
答案 0 :(得分:0)
您可以使用boolean
仅在第一次移动相机时使用
public class MapsActivity extends FragmentActivity implements OnMapReadyCallback, GoogleMap.OnMyLocationChangeListener {
private GoogleMap mMap;
private Marker mMarker;
private boolean firstTime = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_maps);
((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map)).getMapAsync(this);
}
@Override
public void onMapReady(GoogleMap googleMap) {
mMap = googleMap;
mMap.setMyLocationEnabled(true);
mMap.setOnMyLocationChangeListener(this);
}
@Override
public void onMyLocationChange(Location location) {
LatLng loc = new LatLng(location.getLatitude(), location.getLongitude());
mMarker = mMap.addMarker(new MarkerOptions().position(loc));
if (firstTime) {
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(loc, 16));
firstTime = false;
}
}
}
注意:请注意,此示例仅使用GoogleMap.OnMyLocationChangeListener
,因为这是您在问题中使用的方法,但已弃用,您必须根据{{3}使用FusedLocationProviderApi }:
public final void setOnMyLocationChangeListener (GoogleMap.OnMyLocationChangeListener侦听器)
此方法已弃用。使用 com.google.android.gms.location.FusedLocationProviderApi。 FusedLocationProviderApi提供改进的定位和功率 用法并由"我的位置"蓝点。见 例如,示例应用程序文件夹中的MyLocationDemoActivity 示例代码或位置开发人员指南。