защо 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>

person Kelsie    schedule 09.05.2012    source източник


Отговори (3)


Предполагам, че имате повече от архива (карти) в папката SD карта/osmdroid и поради това виждате повече карти.

За център на вашето местоположение можете да използвате.

    mMapView.getController().animateTo(yourPosition);
person Ahyle Blue    schedule 09.05.2012
comment
Здравейте, благодаря за отговора, но не използвам офлайн карти. Това ще причини ли този проблем? - person Kelsie; 09.05.2012
comment
Здравейте благодаря знам какъв ми е проблема! Трябва да изтрия този източник, за да използвам онлайн карта. Въпреки това, за офлайн употреба, какво имате предвид под повече от една архивна карта? - person Kelsie; 09.05.2012
comment
Не мисля така. Може би вашата интернет връзка е ниска или нещо подобно. Или можете да проверите папката на sdCard за osmdroid и да я почистите, ако не е празна. - person Ahyle Blue; 09.05.2012
comment
Когато използвате онлайн карта, osm droid изтегля кеш карта, така че втори път, когато отворите приложението, картата се зарежда най-бързо от първия път. Доколкото знам, osm използва папката SdCard\osmdroid за съхраняване на кеша на картата. Имате нужда от карта за целия свят или само за някой континент\държава\град? - person Ahyle Blue; 09.05.2012
comment
Наистина ви благодаря за помощта. На въпроса ви, използвам картата само за един град. Да, прав си, много е разточително.. Е, обмислих да използвам офлайн карта, но трябва ръчно да добави zip файл на osmdroid към sdcard?? Трябва да разпространя приложението, след като свърша, моите потребители може да не искат да добавят файла ръчно.. Имате ли някакви предложения за това? Мога ли да поставя zip файла някъде в проекта и той ще бъде записан на sd картата на потребителите автоматично, когато се инсталира? - person Kelsie; 09.05.2012
comment
В моето приложение също използвам само един градски архив с поддръжка на увеличение от 12 до 16. Използвам задача за изтегляне на архива от външна връзка и копиране в sdCard\osmdroid директория. За това можете да използвате примера на AsyncTask от сайта android.developer.com и трябва да имате разрешение във файла manifest.xml android:name=android.permission.WRITE_EXTERNAL_STORAGE /› - person Ahyle Blue; 09.05.2012
comment
Също така за използване на офлайн карта ви препоръчвам да използвате този инструмент връзка. Просто настройте MapSource OpenStreetMap Mapnik и създайте атласа, който искате. Поставете резултата в архив с име mapnik.zip и копирайте в sdCard\osmdroid. Късмет! - person Ahyle Blue; 09.05.2012

За мен това беше, че не можах да задам центъра, когато се създава дейността. Ако изчакам ~200 ms, преди да зададете централната точка, всичко работи добре.

Ето грозната корекция:

    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);
person stephanlindauer    schedule 12.08.2014
comment
Благодаря ти! Ти ми спаси деня. - person tsil; 07.09.2014

Проблемът с центрирането на място трябваше да бъде коригиран във версия 4.3 на osmdroid. Заобиколното решение с помощта на postDelayed вече не е необходимо за версия 4.3 нататък.

Подробности: със следния ангажимент към osmdroid, извикванията на "animateTo()" и т.н., които преди това изискваха оформление, за да работи правилно, сега ще бъдат записани и възпроизведени автоматично, след като оформлението бъде създадено.

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

person headuck    schedule 07.09.2015