2

我正在构建一个需要使用 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>
4

3 回答 3

3

对我来说,创建 Activity 时我无法设置中心。如果我在设置中心点之前等待约 200 毫秒,一切正常。

这是丑陋的修复:

    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);
于 2014-08-12T22:27:56.480 回答
0

我猜您在 SD 卡/osmdroid 文件夹中的存档(地图)不止于此,因此您会看到更多地图。

以您的位置为中心,您可以使用。

    mMapView.getController().animateTo(yourPosition);
于 2012-05-09T07:46:23.907 回答
0

在 osmdroid 4.3 版中应该已经修复了关于在某个位置居中的问题。从 4.3 版开始,不再需要使用 postDelayed 的解决方法。

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

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

于 2015-09-07T05:51:03.520 回答