亲爱的朋友们,我有一个osmdroid地图版本4.2和slf版本1.5.8
我也有这个java代码(在那里)。 我的问题是,无论我在哪里设置“setCenter”方法,然后启动地图,然后我尝试导航,系统立即将我转移回我之前设置的defualt坐标。
任何想法如何让我自由地使用预定义的中心导航?
package com.example.com.example;
import org.osmdroid.api.IMapController;
import org.osmdroid.util.GeoPoint;
import org.osmdroid.views.MapView;
import android.app.Activity;
import android.os.Bundle;
import android.view.ViewTreeObserver;
public class OSM_Map extends Activity {
private MapView mapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_osm__map);
mapView = (MapView) this.findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
mapView.setMultiTouchControls(true);
//IMapController mapController = mapView.getController();
mapView.getController().setZoom(11);
ViewTreeObserver vto = mapView.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() { //VERY IMPORTANT, DRAWS LAYOUT FIRST, then positions
mapView.getController().setCenter(new GeoPoint(40.712784,-74.005941));
}
});
}
}
谢谢
答案 0 :(得分:0)
正在重复调用onGlobalLayout侦听器,然后将中心重置为预定义的点。
您需要在最初设置中心后添加以下内容来删除侦听器:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
mapView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
else
mapView.getViewTreeObserver().removeGlobalOnLayoutListener(this);