当我的应用启动时,它会在第一个屏幕中加载地图。
在设置GoogleMap
后,我想访问googleMap.getMyLocation()
并使用该地点将地图居中。
问题是该方法返回null
而不是实际的用户位置
我相信这是因为地图没有足够的时间收集必要的数据并使其可用。我这样说是因为如果我等一会儿并使用按钮来更改地图中心,则返回的位置是有效值。
是否有一种非阻塞方式来轮询该方法并在位置可用时立即更新地图?
另外,我刚注意到方法getMyLocation()
已注释为已弃用。有没有新方法来获取位置?
答案 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));
}