Category: it

Category was added automatically. Read all entries about "it".

я

OSMDroid использование offline карт

Чтобы не зависеть от интернета, для приложения необходимо научиться работать с offline сартой.
Засад тут несколько.
1) OSMDroid по простецки позволяет работать с .png файлами - размеры большие.
2) Нужно создать карту в формате .zip с нужными тайлами
тут свои засады. Масштаб может меняться для MAPQUESTOSM варианта от 0 до 18. В zip файле имеем ограничение на количество файлов в 64К - нужно учитывать как-то это ограничение.
3) Каким то образом положить файл с картой в папку sdcard/osmdroid, причем я не нашел как OSMDroid указать другую папку или имя файла без мануального вмешательства в исходный код библиотеки.
4) непонятно как подсовывать разные офлайн карты программе

В общем - для создания карты в zip файле пользуемся программой Mobile Atlas Creator http://mobac.sourceforge.net/. Написана на Java. Позволяет использовать несколько онлайн источников карт, выделять фрагмент карты, сохранять его в разной детализации и в разных форматах.

Для нашего случая выбираем в меню New Atlas
Выбираем в качестве формата атласа OSMDroid ZIP
В качестве источника данных OpenStreetMap MapQuest
Нужные нам уровни масштабирования (на 18 для моего города например было несколько десятков ошибок скачивания)
Нажимаем кнопку Add Selection
И в меню жмем Create atlas.

В итоге в папке программы в подпапке atlases получаем готовый архив. Распакуем его, папку “MapQuest” переименовываем в “MapquestOSM” и снова архивируем. Имя файла не важно, но без ведущих цифр и русских букв - по некоторым данным бывают проблемы с таким именем.

Как теперь прикрутить к нашей программе этот файл? Ниже даю пример
public View onCreateView(LayoutInflater inflater,ViewGroup parent,Bundle savedInstanceState){
        View v = inflater.inflate(R.layout.fragment_main,parent,false);
        myOpenMapView = (MapView)v.findViewById(R.id.openmapview);
        myOpenMapView.setUseDataConnection(false); //work from directory osmdroid
       
        myOpenMapView.setTileSource(TileSourceFactory.MAPQUESTOSM);
        myOpenMapView.setBuiltInZoomControls(true);
        myOpenMapView.setMultiTouchControls(true);

        myOpenMapView.setMaxZoomLevel(15);
        myOpenMapView.setMinZoomLevel(12);
        BoundingBoxE6 bbox = new BoundingBoxE6(46.520131,30.774078,46.451105,30.686188);
        myOpenMapView.setScrollableAreaLimit(bbox);
        myMapController = (MapController) myOpenMapView.getController();
        myMapController.setZoom(12);
       
        myMapController.setCenter(new GeoPoint(46.46766, 30.726013));
       
        return v;
    }


функция по инициализации фрагмента
запрещаем работать с онлайн картой
myOpenMapView.setUseDataConnection(false);

источник тайлов
myOpenMapView.setTileSource(TileSourceFactory.MAPQUESTOSM);

максимальное и минимальное значение масштаба
myOpenMapView.setMaxZoomLevel(15);
myOpenMapView.setMinZoomLevel(12);

задаем ограничение по скроллируемой области
BoundingBoxE6 bbox = new BoundingBoxE6(46.520131,30.774078,46.451105,30.686188);
myOpenMapView.setScrollableAreaLimit(bbox);


текущий масштаб карты
myMapController.setZoom(12);

центр карты
myMapController.setCenter(new GeoPoint(46.46766, 30.726013));

для начала хватит

Мои книги

Linux









Выдержало 4 издания 2002, 2007, 2009, 2011 года

ISBN 978-5-9775-0712-7;
752 стр.
Формат 70x100/16 (167x236 мм)
Твердый переплет


Сетевое администрирование Linux (+ CD-ROM)



ISBN 5-94157-277-8; 2004 г.
480 стр.
70x100/16 (167x236 мм)
Мягкая обложка


Сеть для офиса и LINUX-сервер своими руками



ISBN 5-94157-668-4; 2006 г.
320 стр.
70x100/16 (167x236 мм)
Мягкая обложка


Linux-сервер в Windows-окружении



ISBN 978-5-94157-669-2; 2007 г.
656 стр.
70x100/16 (167x236 мм)
Мягкая обложка

Принимал участие в переводе Windows Vista Business. Редакции Ultimate, Business и Enterprise


ISBN 978-5-9775-0213-9, 978-0-470-04615-9; 2009 г.
1072 стр.
70x100/16 (167x236 мм)
Твердый переплет

Пишем простой сапер для Андроида. Часть 3

И наконец самое главное – логика игры.

Все в логике вертится вокруг ячейки — класса Cell.
Экземпляр класса Cell имеет два параметра CellState — открыта, закрыта или помечена ячейка
MineState — есть/нет мины, количество мин в соседях.

При создании ячейки — ставим состояние — мин нет, ячейка закрыта
Есть функции установки и получения состояния ячейки.

Объявляем массив ячеек, соответствующий игровому полю
Cell [] [] CellField;

А теперь собственно класс логики игры MinesLohic
Collapse )