为什么osmdroid加载了很多地图。 &安培;缩放到错误的地方

时间:2012-05-09 02:34:59

标签: android google-maps geolocation openstreetmap osmdroid

我正在构建一个需要使用OpenStreetMap的应用程序。地图已加载。然而,当我缩小时,我发现有多个地图已加载..事实上,似乎有无数个地图......中间有一张地图,一张在上面,一张在下面;实际上,如果你向下滚动屏幕,你会看到更多......

是什么原因?抱歉stackoverflow不允许我上传照片。我的代码已附上,您可能想尝试..

另一件事是,我使用位置服务找到了我当前的位置纬度和经度,并将它们存储在GeoPoint中;然后我将缩放中心设置为该点,但是osm转到了另一个点。很远。

我的代码& XML文件附在

下面
public class OsmdActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    MapView mapView = (MapView) findViewById(R.id.mapview);
    mapView.setTileSource(TileSourceFactory.MAPNIK);
    mapView.setBuiltInZoomControls(true);
    MapController mapController = mapView.getController();
    mapController.setZoom(10);

    double lat = 1.29377413882149 * 1000000;
    double lon = 103.771969817518 * 1000000;
    GeoPoint p = new GeoPoint(lat, lon);
    mapController.setCenter(p);
}}



<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >
    <org.osmdroid.views.MapView
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/mapview"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:clickable="true"/>
</LinearLayout>

3 个答案:

答案 0 :(得分:3)

对我而言,创建活动时我无法设置中心。如果我在设置中心点之前等待〜200ms,一切正常。

这是一个丑陋的修复:

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            GeoPoint point = new GeoPoint((int) (52.520820* 1E6),(int) (13.409346* 1E6));
            mapView.getController().animateTo(point);
        }
    }, 200);

答案 1 :(得分:0)

我猜你在SD卡/ osmdroid文件夹中拥有的不仅仅是存档(地图),因此你可以看到更多的地图。

对于您所在位置的中心,您可以使用。

    mMapView.getController().animateTo(yourPosition);

答案 2 :(得分:0)

有关在某个位置居中的问题应该已在osmdroid版本4.3中修复。从版本4.3开始,不再需要使用postDelayed的变通方法。

详细信息:通过以下对osmdroid的提交,现在可以在创建布局后自动记录和重放之前需要布局正常工作的“animateTo()”等调用。

https://github.com/osmdroid/osmdroid/commit/2f38d49281b31e79a8290d8df55bb738024907e8