将 Google 地图居中到当前用户位置

Posted

技术标签:

【中文标题】将 Google 地图居中到当前用户位置【英文标题】:Center Google Maps to current user position 【发布时间】:2016-02-26 21:25:06 【问题描述】:

我创建了一个 android 活动来显示 Google 地图。 我会将地图居中到当前用户位置,但我不知道该怎么做。

这是我当前的代码:

Location location = getMyLocation();
LatLng userPos = new LatLng(location.getLatitude(), location.getLongitude());

map.animateCamera(CameraUpdateFactory.newLatLngZoom(userPos, zoomLevel));

CameraPosition cameraPosition = new CameraPosition.Builder()
                                    .target(userPos)
                                    .zoom(17)
                                    .bearing(90)
                                    .tilt(40)
                                    .build();

map.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));

此代码的来源是 answer(我从中复制了 getMyLocation())和 solution,但它们不起作用。在这两种情况下它都不起作用:中心没有设置,奇怪的是缩放级别也没有设置。

如果我只使用这段代码(没有当前用户位置):

map.moveCamera(CameraUpdateFactory.newLatLngZoom(new LatLng(42.564241, 12.22759), zoomLevel));

即使设置了缩放级别,它也可以正常工作。

可能是什么问题?

【问题讨论】:

【参考方案1】:

确保您拥有以下权限: <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 然后进行一些活动并注册一个 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)  
'

【讨论】:

以上是关于将 Google 地图居中到当前用户位置的主要内容,如果未能解决你的问题,请参考以下文章

Flutter Google Maps - 将相机移动到当前位置

Android 谷歌地图缩放以适​​合标记和当前位置

将 Google 地图缩放到当前位置

将Google地图缩放到当前位置

Google Map CameraUpdate 将某个位置居中 [关闭]

打开地图屏幕时,如何将 MapView 以用户当前位置为中心?反应原生博览会