我有这段代码,通过点击按钮,相机会在我在 map 上的位置居中。
问题是:当我第一次点击时,相机离我的位置太远,我怀疑 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距离它公里 - 估计计算)
最佳答案
最好的方法是使用处理程序。尝试以下:
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
关于android - onClick 等待 1 秒然后运行代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25352115/