OSMdroid 一直导航回 setcenter 位置,为什么?
OSMdroid keeps navigating back to setcenter position, why?
亲爱的朋友们,我有一个osmdroid地图版本4.2,和slf版本1.5.8
我也为它设置了 java 代码(在下面)。
我的问题是,无论我在哪里设置 "setCenter" 方法并启动地图,然后我尝试导航,系统都会立即将我移回我之前设置的默认坐标。
知道如何允许我使用预定义的中心自由导航吗?
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));
}
});
}
}
谢谢
重复调用 onGlobalLayout 侦听器,然后将中心重置为您预定义的点。
您需要在初始设置中心后通过添加以下内容来删除侦听器:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
mapView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
else
mapView.getViewTreeObserver().removeGlobalOnLayoutListener(this);
亲爱的朋友们,我有一个osmdroid地图版本4.2,和slf版本1.5.8
我也为它设置了 java 代码(在下面)。 我的问题是,无论我在哪里设置 "setCenter" 方法并启动地图,然后我尝试导航,系统都会立即将我移回我之前设置的默认坐标。
知道如何允许我使用预定义的中心自由导航吗?
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));
}
});
}
}
谢谢
重复调用 onGlobalLayout 侦听器,然后将中心重置为您预定义的点。
您需要在初始设置中心后通过添加以下内容来删除侦听器:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN)
mapView.getViewTreeObserver().removeOnGlobalLayoutListener(this);
else
mapView.getViewTreeObserver().removeGlobalOnLayoutListener(this);