Google地图无法在设置地图后立即获取我的位置

时间:2014-03-14 19:29:51

标签: android google-maps-android-api-2

当我的应用启动时,它会在第一个屏幕中加载地图。 在设置GoogleMap后,我想访问googleMap.getMyLocation()并使用该地点将地图居中。

问题是该方法返回null而不是实际的用户位置 我相信这是因为地图没有足够的时间收集必要的数据并使其可用。我这样说是因为如果我等一会儿并使用按钮来更改地图中心,则返回的位置是有效值。

是否有一种非阻塞方式来轮询该方法并在位置可用时立即更新地图?

另外,我刚注意到方法getMyLocation()已注释为已弃用。有没有新方法来获取位置?

2 个答案:

答案 0 :(得分:1)

关于位置,正如我在评论中所说,新方法正在使用Fused Location Provider。它允许您通过所有传感器(GPS,wifi,手机信号塔和其他传感器(室内))的组合获得最佳可用位置。

此外,由于在您运行应用程序之前已经获得此位置,因此您无需在应用程序的开始时间等待。如果你打电话

Location mCurrentLocation;
mCurrentLocation = mLocationClient.getLastLocation();

它会给你最近的位置。

如果您想在移动时保持地图居中,也可以请求定时更新。

要开始尝试此操作,我会推荐此“入门”网站并下载本网站右侧列出的示例项目:https://developer.android.com/training/location/retrieve-current.html

答案 1 :(得分:0)

你必须从操作系统获取位置。然后定位地图使用类似于此的代码。 我无法获得要投射的Location和LatLng类,所以我手动完成。

if (location != null) {
     LatLng ll = new LatLng(location.getLatitude(),location.getLongitude());
     mMap.moveCamera(CameraUpdateFactory.newLatLng(latLng));
}