我有这个代码,通过点击按钮,相机位于我在地图上的位置。
问题是:当我第一次点击时,相机离我的位置太远了,我怀疑onClick方法是让位置管理器只获得部分坐标(当我第二次点击同一个按钮时它得到了正确的位置。)
所以,这是代码:
我想尝试的是:
2
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE)
location= locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
longitude = location.getLongitude();
latitude = location.getLatitude();
latlng = new LatLng(latitude, longitude);
此代码运行
4
CameraUpdate center = CameraUpdateFactory.newLatLng(latlng);
CameraUpdate zoom = CameraUpdateFactory.zoomTo(15);
map.moveCamera(center);
map.animateCamera(zoom);
map.addMarker(new MarkerOptions()
.position(latlng));
此代码运行。
这可能吗?
对不起基本问题,但我是Java / Android编程的新手(大约3周左右,我仍然发现一些基本的东西很难实现)。
PS:代码几乎完美地运行,它唯一困扰我的是我必须点击两次才能进入它应该是的位置(在首先点击它距离它约3到4公里 - 估计计算)答案 0 :(得分:4)
最好的方法是使用处理程序。请尝试以下:
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
CameraUpdate center = CameraUpdateFactory.newLatLng(latlng);
CameraUpdate zoom = CameraUpdateFactory.zoomTo(15);
map.moveCamera(center);
map.animateCamera(zoom);
map.addMarker(new MarkerOptions()
.position(latlng));
}
},1000); //adding one sec delay
尝试查看有关处理程序的更多信息。
www.vogella.com/tutorials/AndroidBackgroundProcessing/article.html
答案 1 :(得分:0)
以这种方式编写代码是个坏主意。很常见的getLastKnownLocation将返回null。相反,您应该使用requestSingleUpdate来获取具有新数据的单个位置更新,并将依赖于该位置的任何代码放入onLocationChanged函数中。