Слайд 2ArtfulBits inc.
aiMinesweeper. Первая в Украине игра для Android.
Android custom components

Anti-piracy движение
Готовые решения для Android-разработчиков
Слайд 3Почему Android?
Открытый исходный код
Поддержка со стороны Android community
60 000+

новых пользователей в день
Managed (Java) & Native (JNI, C++) APIs
«3dr party» прошивки
Обильная документация
Множество примеров
Слайд 4Google maps
Google сервер
XML – APIs
Открытый доступ к картам и

навигации
Частые обновления со спутника
Слайд 7Google maps integration
Получение API key от Google
Google map APIs должы

поддерживаться телефоном
Добавление прав доступа (permissions) в AndroidManifest.xml
Добавление MapView в визуальное дерево
Унаследование функционала MapActivity
Слайд 8Библиотека Google Maps
Перевод гео-координат в координаты экрана посредством интерфейса Projection, доступного

через MapView.getProjection()
Доступно 2 реализации абстрактного класса Overlay: MyLocationOverlay и ItemizedOverlay
Рекурсивный вызов Overlay.draw() получает экземпляр MapView для определение координат отрисовки
Слайд 9Отрисовка поверх карты
Объявление своего слоя:
public class CustomOverlay extends Overlay
{
...
public void draw(Canvas

canvas, MapView mapView, boolean shadow)
{
super.draw(canvas, mapView, shadow);
mapView.getProjection().toPixels(m_geoPoint, m_screenPoint);
canvas.drawCircle(m_screenPoint.x, m_screenPoint.y, 10, m_paint);
}
}
Слайд 10Жизненный цикл Activity
public class AppActivity extends MapActivity
{
private MyLocationOverlay m_overlay;
@Override
protected void onCreate(Bundle icicle)
{
super.onCreate(icicle);
setContentView(R.layout.main);
MapView

map = (MapView)findViewById(R.id.mapView);
m_overlay = new MyLocationOverlay(this, map);
map.getOverlays().add(m_overlay);
}
@Override
protected void onResume()
{
super.onResume();
m_overlay.enableMyLocation();
}
@Override
protected void onPause()
{
super.onPause();
m_overlay.disableMyLocation();
}
@Override
protected boolean isRouteDisplayed()
{
return false;
}
}