[英]Retaining previous zoom value on a Map update in Google Maps API v2 for Android
我正在開發基於地圖的應用程序。 它所做的是從服務器接收緯度和經度的數據。 它每x秒刷新一次數據。 然后,它將地圖上的標記移動到收到的新位置(更改的位置)。
我的問題是,在使用地圖時,我不希望為標記重置縮放級別。 我希望它保留用戶在查看地圖時可能已調整到的縮放級別。
我有一個名為bus的標記定義為實例變量:
Marker bus = null;
這是我的BroadCast接收器的代碼,該代碼表明已刷新數據。
private BroadcastReceiver myReceiver = new BroadcastReceiver() {
@Override
//public void onReceive(Context context, Intent intent) {
public void onReceive(Context context, Intent intent) {
if(bus!= null){
bus.remove();
}
bun = ((TabActivity)Tab2Fragment.this.getActivity()).getDataFromActivity();
try{
BusLocation = new LatLng(Double.parseDouble(bun.getString("lat")),Double.parseDouble(bun.getString("long")));
}catch(JSONException e){
e.printStackTrace();
}
bus = map.addMarker(new MarkerOptions().position(BusLocation)
.title("Bus is Here")
.icon(BitmapDescriptorFactory
.fromResource(R.drawable.ic_launcher)));
// Move the camera instantly to the Bus Location with a zoom of 15.
map.animateCamera(CameraUpdateFactory.newLatLngZoom(BusLocation, 15), 1000, null);
}
};
每次更新時,都會重新縮放級別。 我如何不縮放水平? 我嘗試使用newLatLng()代替LatLngZoom,但是在初始化時,它的縮放距離非常遠。 而且我沒有可用的數據來放大相關性。
謝謝你的幫助 :)
事實證明,它的方法太簡單了。 我沒想 物有所值:
具有布爾值
private boolean first = true;
然后在更新中:
if(first)
{
map.animateCamera(CameraUpdateFactory.newLatLngZoom(BusLocation, 15), 1000, null);
first = false;
}
else{
map.animateCamera(CameraUpdateFactory.newLatLng(BusLocation), 1000, null);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.