Общая информация

Введение

Online Maps - это универсальное картографические решение, которое подходит для любых приложений и игр, использующих географическую карту.

Поддерживаются Unity v4.6+, Unity v5+.

Поддерживаемые платформы: Standalone, Webplayer, WebGL, iOS, Android.

Важно: Поддержка WebGL экспериментальная, требует Unity v5.3+. Если вы заметили, что что-то не работает должным образом пожалуйста, напишите нам в поддержку.

Online Maps содержит:

  • Online Maps Component – это ядро. Этот компонент полностью управляет созданием и работой карты, и должен использоваться всегда. Чтобы добавить этот компонент, выберите «Component / Infinity Code / Online maps / Online Maps».
  • Controls – эти компоненты служат для отображения карты на различных источниках, и взаимодействия с пользователем. Обязательно должен использоваться только один controls. Подробнее вы можете прочитать в разделе «Controls».
  • Plugins – дополнительные модули, служащие для расширения функционала карты. Например: GPS (Location Service), здания, кеш.

Online Maps имеет мощное API, используя который, вы сможете решить любую задачу, без модификации основного кода.

Важно: вы можете иметь только один экземпляр карты в сцене.

 

Controls

Controls – служат для отображения карты на различных источниках, и взаимодействия с пользователем.

Типы controls:

  • 2D: GUITexture, SpriteRenderer, UIImage, UIRawImage, NGUI, iGUI, DF-GUI.
  • 3D: Texture, Tileset.

Все controls, кроме «Tileset», работают в режиме «рисование в текстуру». Tileset Control, работает в режиме «Tileset». Узнать больше о режимах работы, вы можете в разделе «Режим работы карты».

Для использования NGUI control, iGUI control и DF-GUI control необходимо наличие в проекте соответствующих assets. Эти assets вы можете приобрести в Unity Asset Store.

Важно: вы можете использовать только один control.

Если вы хотите отобразить карту, на источнике, для которого нет подходящего control, пожалуйста, напишите нам. Мы постараемся добавить нужный вам control в кратчайшее время.

 

Режим работы карты

«Online Maps» поддерживает два режима работы карты:

  1. Рисование в текстуру. В этом режиме карта и все дополнительные элементы рисуются в текстуру. Это универсальный режим. Вы можете отобразить карту в любом месте, используя необходимый control.
  2. Tileset. Это процедурно-генерируемый mesh. Этот режим работает быстрее и требует меньше памяти, чем рисование в текстуру. Поддерживает 3D маркеры, высотные данные и здания. Рекомендуется для использования на мобильных устройствах и WebGL.

 

Быстрое создание карты с помощью Wizard

Выберите «Hierarchy / Create / Maps» или «GameObject / Create Other / Map».

Примечание: В Unity v5+, выберите «Hierarchy / Create / Create Other / Map».

Выберите тип карты, место где вы хотите использовать карту, дополнительные настройки и нажмите «Create».

 

Ручное создание карты

Выберите в меню пункт «Component / Infinity Code / Online maps / Online Maps», чтобы добавить компонент на выделенный GameObject.

В разделе «Create texture» выберите необходимые размеры и нажмите «Create». Будет создана новая текстура в корне проекта с именем «OnlineMap», и добавлена на источник отображения. Если файл с таким именем уже существует, то он будет заменен.

Выберите поставщика и тип текстур, которые вы хотите использовать.

Важно: если вы используете режим «Tileset», то создавать текстуру ненужно.

Чтобы карта стала интерактивной, выберите в меню пункт «Component / Infinity Code / Online Maps / Controls».

В разделе «Advanced» выберите «Redraw on Play».

Запустите сцену.

Переместите область карты в нужное место.

Добавьте маркеры (подробнее в разделе «Маркеры»).

Чтобы сохранить текущее состояние нажмите «Save state».

Остановите сцену.

 

Ограничения Webplayer и WebGL

Важно: это ограничения только для Webplayer и WebGL. Для остальных платформ все запросы идут напрямую.

В «Online Maps» использует класс WWW, на который существуют ограничения безопасности. По этой причине для Webplayer все запросы к тайлам и сервисам работают через прокси на infinity-code.com.

 

Для WebGL запросы к Bing Maps работают через прокси на infinity-code.com. Это сделано потому что для WebGL сервер должен возвращать ответ с заголовком:

header ("Access-Control-Allow-Origin: *");

Использование этого заголовка не реализовано в сервисах Bing Maps.

 

В настоящее время наш прокси сервер не имеет ограничений на количество запросов. Но при сильном увеличении нагрузки на наш сервер, мы можем добавить такие ограничения.

Все запросы к серверу кэшируются. В настоящее время жизни кэша составляет четыре дня, но это значение может быть изменено.

Если вы хотите получить скрипты серверной части, и использовать их на своем сервере, пожалуйста, напишите нам в поддержку. В этом случае вы не будете зависеть от работы нашего сервера.

 

JS Loader

Для Webplayer мы разработали специальный механизм, который позволяет обрабатывать все запросы (кроме запросов к Bing Maps) без использования прокси сервера (используется XMLHttpRequest). Это сильно увеличивает скорость загрузки тайлов и позволяет избежать кэширования нашего прокси сервера.

Использование этого скрипта настоятельно рекомендуется для Webplayer.

Добавьте «OnlineMapsJSLoader» на GameObject карты, и после каждой публикации нажмите «Patch file».

Важно: В Unity Editor этот скрипт модифицирует «WWW Security Emulation / Host URL». Используйте «OnlineMapsUtils.GetWWW» для создания собственных запросов.

 

Взаимодействие с картой

Управление картой аналогично их использованию в онлайн сервисах или приложениях.

Нажмите кнопку мыши и переместите мышь, для изменения положения карты.

Используйте колесо мыши для приближения или отдаления карты.

Двойной клик, приближает карту в месте под курсором.

Нажмите «M», чтобы создать новый маркер.

Нажмите «N», чтобы создать новый 3D маркер.

Зажмите «Left Control», чтобы включить режим перемещения маркеров.

 

Если вы используете 3D control, с включенным «Allow Camera Control», то вы зажмите правую кнопку мыши, чтобы включить режим вращения камеры вокруг карты.

 

Сохранение состояния карты

Вы можете сохранить текущее состояние карты в режиме выполнения.

Для этого нажмите «Save state», выберите объекты, которые вы хотите сохранить и нажмите опять «Save state».

После того как вы остановите сцену, карта сохранит указанное состояние.

 

Работа на мобильных устройствах

Online Maps работает на iOS и Android.

Жесты:

  • Drag - перемещение карты.
  • Pinch – изменение zoom.
  • Double tap – приближение карты, в указанной точке.
  • Spread – вращение камеры вокруг карты. Требуется 3D control с включенным «Allow Camera Control».

Важно: в текущей версии плавный pinch-to-zoom возможен только при использовании «Tileset». Для включение плавного pinch-to-zoom, включите «Smooth zoom».

 

Для оптимальной производительности на мобильных устройствах мы рекомендуем использовать режим «Tileset».

Если вы хотите рисовать карту в текстуру, то мы рекомендуем использовать размер текстуры не более 512x512.

 

Если на iOS вы видите большие красные вопросительные знаки, вместо текстур, то включите программный JPEG декодер (Online Maps Inspector / Troubleshooting / Software JPEG Decoder).

 

Лицензии и API Keys

Online Maps предоставляет вам техническую возможность использовать карты в ваших приложения, но не дает вам никаких разрешений и привилегий. При работе с Online Maps вы должны соблюдать условия лицензионного соглашения, выбранного вами провайдера.

 

Предустановки для всех провайдеров и типов карт представлены для ознакомительного использования.

 

Легальный путь использовать тайлы Google Maps в ваших приложениях:

https://developers.google.com/maps/documentation/tile/

 

Для использования некоторых возможностей Online Maps вам потребуются API Keys некоторых провайдеров.

 

Google API Key требуется для использования большинства веб сервисов Google. 

Получить ваш Google API key, вы можете в Google API Console: 

https://console.developers.google.com/

Важно: Для Google Places API нужно включить Google Places API Web Service.

 

Bing Maps API Key требуется для использования Elevations и Bing Maps Location API. 

Получить ваш Bing Maps API Key, вы можете здесь:

http://msdn.microsoft.com/en-us/library/ff428642.aspx

 

Описание полей

Online Maps

1. Показывает, что доступны обновления в выбранном канале. Нажмите для перехода к встроенной системе обновления.

2. Source – источник тайлов (Online, Resources, Resources and Online).

3. (Только для Webplayer и WebGL) Use Proxy – нужно ли использовать прокси.

4. (Только для Webplayer и WebGL) Proxy – URL прокси сервера.

5. Provider – поставщик тайлов текстур.

6. Type – тип карты.

7. Label – показывать названия объектов на карте.

8. Language – язык названий на карте.

9. Latitude / Longitude – координаты центральной точки карты.

10. Zoom – текущий уровень приближения.

11. Target – куда будет рисоваться карта (Texture или Tileset).

12. (Только для Target - Texture) Texture – текстура, на которой будет рисоваться карта.

13. (Только для Target - Tileset) Width / Height (pixels) – размер tileset. Это поле работает как размер текстуры. Больше значение – качественнее карта, но медленнее скорость работы. Должно быть кратно 512.

14. (Только для Target - Tileset) Size (in scene) – размер tileset в сцене.

15. (Только в playmode) Cache tiles to Resources – кэширует текущие тайлы в папку «Resources».

16. (Только в playmode) Save state – сохраняет текущий вид. После нажатия вы сможете выбрать, что вы хотите сохранить.

17. 2D Markers – этот раздел содержит все 2D маркеры, которые добавлены на карту.

18. Номер маркера.

19. Latitude / Longitude – позиция маркера.

20. Zooms – Zoom карты, при котором маркер будет показан.

21. Rotation – угол поворота маркера (0-1) по часовой стрелке.

22. Scale – масштаб маркера.

23. Label – имя (всплывающая подсказка) маркера.

24. Align – выравнивание маркера.

25. Texture – текстура маркера.

26. Remove - удаляет маркер.

27. Add Marker – создает новый маркер.

28. (Только для Target - Texture) Create Texture – этот раздел позволяет создать новую текстуру, на которой будет рисоваться карта.

29. Filenameимя файла. Если файл существует, то будет перезаписан.

30. Type – тип текстуры (Sprite или Texture).

31. Width / Heightразмер создаваемой текстуры.

32. Create - Создать текстуру.

33. Advanced – раздел, в котором собраны дополнительные настройки.

34. (Только для Target - Texture) Redraw on play – указывает, будет ли текстура перерисована сразу при запуске сцены, или только после изменения положения или масштаба.

35. (Только для Target - Texture) Smart Texture – при перемещении карты будет показываться текстура меньшего размера, чтобы render карты производился быстрее.

36. Use Current Zoom Tiles – по умолчанию (отключено) Online Maps использует родительские тайлы, чтобы улучшить отображение карты при изменении zoom. Вы можете предотвратить это включив этот параметр.

37. Traffic – указывает, будет ли отображаться слой с информацией о загруженности дорог.

38. Empty Color – цвет, используемый для рисования тайла пока текстура тайла не загружена. Если указан «Default tile», то этот цвет не используется.

39. Default Tile Texture – текстура, используемая для тайла, пока не загружена правильная текстура тайла.

40. Tooltip Background – фоновая текстура всплывающей подсказки.

41. Default Marker Texture – иконка маркера, используемая по умолчанию.

42. Markers Align – выравнивание иконки маркера, используемое по умолчанию.

43. Show Marker Tooltip – когда должны появляться подсказки (при наведении, при нажатии, всегда или никогда).

44. Troubleshooting – в этом разделе собраны настройки, которые помогут решить проблемы. Используйте этот раздел, только если вы имеете проблемы.

45. Software JPEG Decoder – для загрузки JPEG будет использован программный декодер. Программный декодер работает намного медленнее чем, аппаратный.

46. Render In Thread – расчет карты будет производиться в отдельном потоке.

47. Non Interact Under GUI – предотвращает события карты под GUI элементами.

48. Stop Playing When Scripts Compile – когда Unity Editor компилирует скрипты, Online Maps останавливает playmode, для предотвращения крахов Unity Editor.

 

2D Controls

1. Allow Add Marker By M – наведите на требуемое место на карте и нажмите «M», чтобы создать новый маркер.

2. Allow Zoom – указывает, может ли пользователь изменять zoom карты.

3. Allow User Control – указывает, может ли пользователь изменять положение карты.

4. Invert Touch Zoom – меняет направление touch zoom.

5. Zoom In On Double Click – указывает, будет ли карта приближена по двойному щелчку, или двойному тапу, на мобильных устройствах.

 

3D Controls

1. Allow User Control – указывает, может ли пользователь изменять положение карты.

2. Allow Add 2D Marker By M – наведите на требуемое место на карте и нажмите «M», чтобы создать новый 2D маркер.

3. Allow Add 3D Marker By N – наведите на требуемое место на карте и нажмите «N», чтобы создать новый 3D маркер.

4. Allow Zoom - указывает, может ли пользователь изменять zoom карты.

5. Zoom In On Double Click – указывает, будет ли карта приближена по двойному щелчку, или двойному тапу, на мобильных устройствах.

6. Invert Touch Zoom – меняет направление touch zoom.

7. Allow Camera Controlуказывает, нужно ли вращать камеру вокруг карты. Чтобы вращать карту используйте правую кнопку мыши, или жест Spread на мобильных устройствах.

8. Camera Distance – дистанция от камеры, до центральной точки карты.

9. Camera Rotation – углы поворота камеры, относительно центральной точки карты.

10. Camera Rotation Speed – скорость поворота камеры.

11. Camera Adjust To – точка, на которую будет смотреть камера.

12. Camera – камера, с которой будет взаимодействовать Control. Если камера не указана, то будет использована Main Camera.

13. Marker 2D Mode - режим отображения маркеров (flat или Billboard).

14. 3D Markers – в этом разделе собраны все 3D маркеры.

15. Marker3D Scale – масштаб по умолчанию, который будет использован для новых 3D маркеров.

16. Allow Default Marker Events – указывает будет ли стандартные события маркеров работать для 3D маркеров.

17. Номер маркера.

18. Latitude / Longitude – позиция маркера.

19. Zooms – zoom карты, при котором маркер будет показан.

20. Scale – размер маркера.

21. Label – Имя (подсказка) маркера.

22. Prefab – GameObject, который будет использован для маркера. Если prefab не указан, то будут использован Box.

23. Remove - Удаляет маркер.

24. Add Maker – добавляет новый маркер.

 

 

Tileset Control

1-28. Смотрите в разделе 3D Control.

7. Smooth Zoom использовать плавный touch zoom на мобильных устройствах.

8. Smooth Zoom Mode – режим работы smooth zoom.

29. Materials & Shaders – в этом разделе вы можете настроить материалы и шейдеры для Tileset.

30. Tile Material – материал, который будет использоваться для тайлов.

31. Marker Material – материал, который будет использоваться для маркеров.

32. Tileset Shader – шейдер, который будет использоваться для тайлов, если Tile material не указан.

33. Marker Shader – шейдер, который будет использоваться для 2D маркеров.

34. Drawing Shader – шейдер, который будет использоваться для Drawing Elements.

35. Use Elevation – указывает, нужно ли использовать elevation maps.

36. Elevation Scale масштаб высотных данных.

37. Zoom - zoom карты, при котором будет показана карта с elevations.

38. Bing Maps API Key – ключ для Bing Maps API. Доступно только при «Use Elevation».

39. Create Bing Maps API Key – открывает страницу в браузере, где вы можете создать ваш API key.

40. Move camera to center of Tileset – направляет камеру на центральную точку карты, и располагает камеру перпендикулярно карте.

 

 

 

Location Service

1. Disired Accuracy (meters) - желаемая точность в метрах. При использование большого значения (например, 500), как правило, не требует использования GPS и, экономит заряд аккумулятора. Небольшие значения 5-10 могут быть использованы для получения максимальной точности.

2. Compass Threshold – чувствительность компаса (градусов), для предотвращения дрожания.

3. Find Location By IP – ищет местоположение пользователя по IP адресу. Имеет очень низкую точность.

4. Update Map Position - обновлять позицию карты на основе данных GPS.

5. Update Distance - минимальное расстояние (в метрах), при котором будет обновлена позиция. Более высокие значения (например, 500) означает меньше накладных расходов.

6. Auto Stop On Input – не обновлять позицию карты, после того как пользователь изменяет позицию карты или zoom.

7. Restore After (sec) – восстановить авто обновление позиции карты, после указанного количества секунд бездействия.

8. Create Marker – создать маркер, в текущем положении GPS.

9. Type – тип маркера (2D или 3D).

10a. Texture – текстура 2D маркера.

10b. Prefab – GameObject, который будет использован для 3D маркера.

11. Align – выравнивание 2D маркера.

12. Tooltip – подсказка маркера.

13. Use Compass – поворачивать маркер, на значение компаса.

14. Use GPS Emulator – эмулирует значения GPS и компаса. Работает только в Unity Editor.

15. Position – эмулируемые координаты GPS.

16. Compass – эмулируемое значение компаса.

 

Buildings

1. Zoom - zoom карты, при котором будет показаны здания.

2. Levels – количество этажей зданий.

3. Level Height – высота этажа.

4. Min Building Height - минимальная высота здания.

5. Height Scale – масштаб здания.

6. Max Number of Buildings – максимальное количество зданий, которое будет использоваться.

7. Max Number of Active Buildings – максимальное количество зданий, которые могут показываться на карте одновременно.

8. Materials – материалы зданий. При генерации зданий материал выбирается произвольно.

9. Номер материала, и кнопка, позволяющая удалить материал.

10. Wall Material – материал стены.

11 Roof Material – материал крыши.

12. Scale – Масштаб текстур.

13. Добавить новый материал здания.

 

Тайлы

Online Maps, как и большинство картографических приложения, использует для создания карт тайловую систему.

Online Maps поддерживает только растровые тайлы размером 256x256 пикселей.

Что такое тайловая система, и как это работает, вы можете прочитать здесь:

https://msdn.microsoft.com/en-us/library/bb259689.aspx

http://www.maptiler.org/google-maps-coordinates-tile-bounds-projection/

 

Источник тайлов карты

Online maps может получать тайлы:

  • Online – с сайта провайдера.
  • Resources – из папки «Resources».
  • Resources and Online – по возможности будут загружаться тайлы из папки «Resources». Если тайл отсутствует, то он будет загружен с сайта провайдера.

Если вы хотите загружать тайлы из папки «Resources», то разместите тайлы в формате «Resources / OnlineMapsTiles / {ZOOM} / {TileX} / {TileY}.png».

 

Провайдеры тайлов

Online Maps может работать с любым провайдером тайлов, имеющим проекцию WGS84 Spherical Mercator (Web Mercator) или WGS84 Ellipsoid Mercator.

Это большинство существующих карт.

 

Список известных провайдеров:

Поддерживаются: AMap, ArcGIS (ESRI), CartoDB, Google Maps, Hydda, MapQuest, Mapy.CZ, Nokia Maps (here.com), Open Map Surfer, Open Street Map, Open Topo Map, Open Weather Map, Stemen, Sputnik, Thunderforest, TianDiTu, Virtual Earth (Bing Maps), Yandex Maps.

Частично поддерживаются (требуют вручную настроить шаблон URL): MapBox.

Не поддерживаются (имеют другую проекцию): Baidu Maps.

 

Это не полный список, и будет дополняться. Если вы хотите использовать провайдера, которого нет в списке, пожалуйста, обратитесь в нашу поддержку. Мы проверим работу нужного провайдера.

 

Использование «Provider - Custom»

Чтобы использовать «Provider - Custom», вам нужно в поле «URL» указать шаблон URL для загрузки тайлов.

Шаблон URL поддерживает tokens:

{zoom} – Zoom level.

{x} – Tile X.

{y} – Tile Y.

{quad} – Tile Quad Key. Используется в Virtual Earth (Bing Maps).

 

Общая инструкция:

  1. Откройте в браузере карту на сайте провайдера, тайлы из которой вы хотите использовать.
  2. Откройте в браузере инструменты разработчика. Горячая клавиша в большинстве браузеров – F12.
  3. Найти адрес запроса на загрузку тайла.
  4. В адресе заменить числа, которые отвечают за tile zoom, x, y, на tokens.
  5. Вставить этот шаблон в поле «URL».

Пошаговую инструкцию по использованию «Provider - Custom», вы можете прочитать в разделах «Использование MapBox» и «Styled Google Maps».

 

Custom URL Wizard

Для Google Maps и Mapbox вы можете использовать «Custom URL Wizard». Чтобы открыть «Custom URL Wizard» нажмите кнопку справа от «Custom Provider URL». Введите URL тайла, который вы получили в шаге 3, и нажмите кнопку «Apply».

 

Использование MapBox

Откройте карту MapBox в браузере. Для примера, мы будем использовать карте mapbox.street:

https://www.mapbox.com/editor/?layers=mapbox.streets#style

Откройте в браузере инструменты разработчика. Горячая клавиша в большинстве браузеров – F12.

Найти адрес запроса на загрузку тайла.

Скопируйте адрес.

https://a.tiles.mapbox.com/v4/mapbox.streets/4/10/8.png?access_token=XXX

В адресе замените значения, отвечающие за Tile zoom, x, y на tokens.

Должно получиться URL:

https://a.tiles.mapbox.com/v4/mapbox.streets/{zoom}/{x}/{y}.png?access_token=XXX

В Online Maps выберите «Provider - Custom», и укажите этот URL.

 

Использование Mapbox Studio Classic

Mapbox идет по пути векторных карт. Online Maps не поддерживает векторные карты.

Но вы все еще имеете хороший способ сделать растровые карты с помощью Mapbox.

  1. Скачайте и установите Mapbox Studio Classic: https://www.mapbox.com/mapbox-studio-classic/
  2. Создайте новый классический стиль.
  3. Сохраните стиль и нажмите «Upload to Mapbox».
  4. Откройте классические стили в браузере: https://www.mapbox.com/studio/classic/styles/
  5. Нажмите «Share».
  6. Используйте инструкцию в разделе «Использование Mapbox», чтобы получить URL тайлов.

 

Стилизированные Google Maps

Чтобы стилизировать Google Maps, вам необходимо:

  1. Настроить желаемый стиль карты, с использованием любого онлайн сервиса, который позволяет настраивать стиль карты. Например:
    https://snazzymaps.com/
  2. Открыть в браузере инструменты разработчика. Горячая клавиша в большинстве браузеров – F12.
  3. Найти адрес запроса на загрузку любого тайла. Она будет иметь вид:
    http://mt0.googleapis.com/vt?pb=!1m4!1m3...
  4. Открыть этот URL и убедиться, что изображение имеет размер 256x256.
  5. Скопировать этот адрес.
  6. В Online Maps Inspector выбрать «Provider - Custom», и вставить этот адрес в поле «URL».
  7. В поле «URL» заменить «!1iX!2iX!3iX», на «!1i{zoom}!2i{x}!3i{y}».
    Должно получиться что-то похожее на:
    http://mt0.googleapis.com/vt?pb=!1m4!1m3!1i{zoom}!2i{x}!3i{y}!2m3!...
  8. Убедитесь, что URL заканчивается на «!4e0» (включительно). Если вы имеете знаки после, то удалите их.

Это все. Вы используете Styled Google Maps.

 

Работа офлайн

Подготовка тайлов для офлайн использования с помощью GMapCatcher

Для подготовки тайлов удобно использовать GMapCatcher.

С помощью GMapCatcher, скачайте нужный участок карты.

В Online Maps нажмите «Import From GMapCatcher».

Все скачанные тайлы, будут помещены в папку «Resources / OnlineMapsTiles», в формате, необходимом для использования.

 

Подготовка тайлов для офлайн использования вручную

Разместите ваши тайлы в формате «Resources / OnlineMapsTiles / {ZOOM} / {TileX} / {TileY}.png».

 

Кэширование текущего состояния карты

Нажмите «Cache tiles to Resources», чтобы кэшировать текущее состояние карты в папку Resources.

Выберите «Source – Resources and Online».

Кэшированные тайлы будут загружаться из папки Resources, что ускорит загрузку тайлов при запуске приложения.

 

Другие методы офлайн использования

Используя Online Maps API, вы можете перехватить запрос на загрузку тайла, и загрузить его из ЛЮБОГО источника, например: AssetBundle или файловая система.

Пример использования: CustomDownloadTileExample.cs

 

Маркеры

Работа с маркерами

В разделе «Markers» вы можете увидеть все маркеры.

Если в маркере указано значение «Label», то при наведении на иконку маркера в режиме воспроизведения, появится всплывающее сообщение.

Для добавления маркера в режиме воспроизведения:

Наведите курсор на место, где вы хотите добавить маркер и нажмите клавишу «M». В указанном месте будет создана новый маркер, с параметрами по умолчанию.

Вы можете перетаскивать маркеры на карте, зажав кнопку «Left Control».

После внесения изменений в режиме воспроизведения нажмите кнопку «Save state».

Важно: Текстура маркера должна иметь формат ARGB32, и включенное поле «Read/Write Enabled». Эти параметры вы можете найти в настройках импорта текстур.

 

Работа с 3D маркерами

Важно: 3D маркеры поддерживаются только на Texture Control или Tileset Control.

Работа с 3D маркерами аналогична работе с 2D маркерами. Вы можете создать 3D маркер в указанном месте карты, нажав клавишу «N».

Все созданные 3D маркеры вы можете найти в компоненте «OnlineMapsTextureControl» или «OnlineMapsTilesetControl».

 

Анимированные маркеры

К сожалению, Online Maps не имеет встроенной возможности работы с анимированными маркерами.

Но у вас есть несколько путей для создания анимированных маркеров:

  1. Использовать 3D маркеры. Например, сделать плоский 3D маркер, в котором скриптом подменять текстуру маркера.
  2. Создать собственную систему маркеров, например, для uGUI. Это просто. Примеры создания собственной системы маркеров для NGUI и uGUI в «Examples (API Usage)». Если вам понадобится помощь в создании собственной системы маркеров, пожалуйста, напишите нам.

 

Кеширование тайлов

Online Maps имеет встроенную систему кеширования тайлов, которая позволяет сильно уменьшить количество запросов к серверам тайлов и ускорить работу приложения.

Чтобы использовать кеширование добавьте компонент «Online Maps Cache».

Кеширование работает в двух режимах: кеш в памяти и файловый кеш. Вы можете использовать оба режима вместе, или только один из режимов.

Важно: Для Webplayer и WebGL файловый кеш не поддерживается, потому что на этих платформах нет доступа к файловой системе.

 

Использование Location Service (GPS)

Для мобильных устройств доступно определение местоположения по GPS. Чтобы включить определение местоположения, добавьте на GameObject скрипт «OnlineMapsLocationService.cs» или выберите пункт меню «Component / Infinity Code / Online Maps / Plugins / Location Service».

Online Maps может определять местоположение по IP (по умолчанию включено). Определение местоположения по IP имеет очень низкую точность (в большинстве случает с точностью до города), но может быть очень полезным, когда GPS недоступен.

Чтобы создать маркер в текущей позиции включите «Create Marker», выберите тип маркера и укажите его параметры. Он будет автоматически обновлять позицию, при изменении местоположения. Если вы хотите, чтобы маркер указывал направление, то включите «Use Compass».

Чтобы включить GPS Emulator включите «Use GPS Emulator». Укажите местоположение и значение компаса.

 

Высотные данные

Для получения высотных данных используется Bing Maps Elevation API.

Чтобы сделать карту, с реальными данными о высоте, используйте Tileset Control.

Включите «Use Elevation» и укажите ваш Bing Maps API key. Если вы не имеете ключа, нажмите «Create Bing Maps API key».

Важно: Public Windows App или Public Windows Phone App позволяют сделать 50.000 запросов в течении 24 часов. При других выборах вы сможете сделать только 125.000 запросов в течении года. При превышении лимита ваш ключ не будет работать.

Вы можете перехватить запрос на загрузку Elevation Data через API, и использовать любой источник высотных данных, например SRTM.

Пример, как перехватить запрос за загрузку Elevation Data: InterceptElevationRequestExample.cs.

 

Генерация зданий

Генерация зданий доступна только при использовании Tileset Control.

Чтобы включить генерацию зданий, добавьте на GameObject скрипт «OnlineMapsBuildings.cs» или выберите пункт меню «Component / Infinity Code / Online Maps / Plugins / Buildings».

Здания создаются динамически, на основе данных Open Street Map.

В «Online Maps Buildings Inspector» укажите требуемые материалы для стен и крыш.

 

Сторонние assets и сервисы

Работа с NGUI, DF-GUI и iGUI

Добавьте необходимый control на GameObject с картой. Включите поддержку кнопкой «Enable NGUI (DF-GUI or iGUI)».

Для NGUI: Для того чтобы карта стала интерактивной добавьте Collider на GameObject (NGUI\Attach\Collider).

Для NGUI: Если вы используете карту в режиме Tileset, то она должна располагаться в Hierarchy снаружи объекта UIRoot.

 

Работа с uGUI и SpriteRenderer

Чтобы работать с картой через uGUI Image и SpriteRenderer, вам нужно выбрать текстуру карты в проекте. В настройках импорта текстуры вам необходимо указать «Sprite mode - Single». После этого добавить эту текстуру в «Image / Source Image» или «Sprite Renderer / Sprite».

Если «Sprite Mode - Single», автоматически возвращается к «Sprite Mode - None», выполните следующие действия:

  • Texture Type – Sprite;
  • Apply;
  • Texture Type – Advanced;
  • Read / Write Enabled – On;
  • Apply.

 

Для SpriteRenderer: Для того чтобы карта стала интерактивной добавьте BoxCollider на GameObject.

 

Работа с Playmaker

Перед импортом «Online Maps Playmaker Integration Kit» убедитесь, что Playmaker присутствует в вашем проекте. Поддерживаются Playmaker v1.7.7 и выше.

Выберите «GameObject / Infinity Code / Online Maps / Packages / Playmaker Integration Kit», чтобы импортировать actions, для работы с Online Maps.

Новые actions сгруппированы в разделы, название которых начинается с «Online Maps».

К сожалению, для реализации некоторых специфических задач невозможно создать action, поэтому вам придется использовать Online Maps API.

Узнать, как использовать Playmaker вы можете в его официальной документации:

https://hutonggames.fogbugz.com/default.asp?W1

 

Важно: При каждом обновлении Online Maps импортируйте «Playmaker Integration Kit» заново.

 

Интеграция с Real World Terrain

Вы можете отображать на карте позицию, на основе результата работы Real World Terrain.

Добавьте «Component / Infinity Code / Online Maps / Plugins / Real World Terrain Connector», на объект, сгенерированный Real World Terrain (рядом с Real World Terrain Container), и выберите режим работы коннектора.

 

Интеграция с Curved UI

Online Maps UIImage Control и Online Maps UIRawImage Control поддерживают работу с Curved UI.

Импортируйте Curved UI в проект и в инспекторе control нажмите «Enable Curved UI».

 

Google API веб сервисы

Online Maps умеет работать с некоторыми Google API сервисами:

Google Direction - рассчитывает маршруты между пунктами на карте. Поддерживается поиск маршрутов для различных способов перемещения, в том числе на общественном транспорте, автомобиле, велосипеде или пешком. При поиске маршрутов пункты отправления, назначения могут указываться либо в виде текстовых запросов (например, "Чикаго, Иллинойс" или "Дарвин, Новый Южный Уэльс, Австралия"), либо в виде значений координат — широты и долготы. API маршрутов может возвращать составные маршруты в виде последовательности путевых точек.

Google Elevation – позволяет получить данные о высотах всех точек на земной поверхности, включая глубины.

Google Geocode - преобразует адреса (такие как 1600 Amphitheatre Parkway, Mountain View, CA) в географические координаты (такие как широта 37.423021 и долгота -122.083739), которые можно использовать для размещения маркеров или позиционирования карты. Эта служба позволяет выполнять также обратное действие (перевод координат в адреса). Этот процесс называется «обратным геокодированием».

Google Places - позволяет запрашивать информацию об организациях, достопримечательностях, географических объектах и многих других местах на карте в заданном радиусе либо по прямому текстовому запросу. При этом возвращается список мест и общая информация о каждом из них.

Google Place Details – позволяет получить подробную информацию об объекте по place id, или reference.

Google Place Photo - это доступный только для чтения источник высококачественных снимков для вашего приложения. Она открывает доступ к миллионам фотографий, которые хранятся в базах данных Google Адресов и Google+ Адресов.

Google Places Autocomplete - возвращает список адресов и организаций, которые вероятно ищет пользователь, в ответ на запрос, содержащий текстовую строку (обязательно) и радиус поиска (необязательно). По мере ввода текстового запроса пользователю предлагаются подходящие компании, адреса, достопримечательности и другие места.

Google Roads API - позволяет сопоставлять GPS-координаты с геометрией дороги и определять ограничения скорости на этих участках дороги.

 

Если вам необходима поддержка еще каких-нибудь сервисов Google, пожалуйста, напишите нам. Мы постараемся добавить их поддержку в Online Maps.

Важно: Для работы с Google API веб сервисами требуется Google API Key. Вы можете получить его в Google API Console:

https://console.developers.google.com/

 

Open Street Map Overpass API

С помощью Open Street Map Overpass API, вы можете получать информацию из Open Street Maps, например: здания, дороги, реки.

Полный список объектов:

http://wiki.openstreetmap.org/wiki/Map_Features

Документация по Overpass API:

http://wiki.openstreetmap.org/wiki/Overpass_API/Language_Guide

 

Используйте «OnlineMapsOSMAPIQuery.Find(Overpass QL request)», для запроса к Overpass API.

Вы можете тестировать ваши запросы с помощью:

http://overpass-turbo.eu/

 

Другие сторонние веб сервисы

AMap Search - китайский сервис для поиска POI.

Bing Maps Elevation - сервис для получения высотных данных для местоположений, полилинии или области на Земле.

Bing Maps Location - преобразует адреса (такие как 1600 Amphitheatre Parkway, Mountain View, CA) в географические координаты (такие как широта 37.423021 и долгота -122.083739), которые можно использовать для размещения маркеров или позиционирования карты. Эта служба позволяет выполнять также обратное действие (перевод координат в адреса). Этот процесс называется "обратным геокодированием". Требуется Bing Maps API Key.

HERE Routing - вычисляет маршруты между двумя или более местах и обеспечивает дополнительную информацию о маршруте, связанных с обновлений трафика в режиме реального времени.

Open Street Map Nominatim - преобразует адреса (такие как 1600 Amphitheatre Parkway, Mountain View, CA) в географические координаты (такие как широта 37.423021 и долгота -122.083739), которые можно использовать для размещения маркеров или позиционирования карты. Эта служба позволяет выполнять также обратное действие (перевод координат в адреса). Этот процесс называется "обратным геокодированием".

Open Route Service - рассчитывает маршруты между пунктами на карте. Поддерживается поиск маршрутов для различных способов перемещения. При поиске маршрутов пункты отправления, назначения могут указываться либо в виде текстовых запросов (например, "Чикаго, Иллинойс" или "Дарвин, Новый Южный Уэльс, Австралия"), либо в виде значений координат — широты и долготы. API маршрутов может возвращать составные маршруты в виде последовательности путевых точек.

QQ Search - китайский сервис для поиска POI.

 

 

Online Maps API

Подробную информацию обо всех доступных классах, методах и переменных вы можете найти в API Reference.

Порядок значения в координатах:

Vector2, Vector3: X - долгота, Y - широта;

Параметры методов: сначала - долгота, потом - широта.

 

Примеры использования Online Maps API вы можете найти в папке «Examples (API usage)».

Важно: не изменяйте скрипты в папке «Examples (API Usage)». Вы потеряете ваши изменения при обновлении Online Maps. Создайте копию скрипта, с новым именем файла и класса.

 

Атлас примеров находится в папке «Documentation».

Важно: распаковывайте API Reference и Atlas of Examples снаружи вашего проекта.

 

Если у вас есть пример, который вы хотите, чтобы мы опубликовали в «Examples (API usage)», пожалуйста, пришлите его нам. Мы опубликуем его с указанием авторства и сохранением копирайтов.

 

Внесение изменений в код Online Maps

Мы не рекомендуем вам самостоятельно вносить изменения в код Online Maps, потому что они будут потеряны при обновлении.

Мы постарались сделать API максимально открытым для использования и расширения. Большинство задач можно решить, используя API или расширив класс соответствующего Control.

Если для решения вашей задачи необходимо внесения изменений в код Online Maps, то пришлите, пожалуйста, нам измененный код. Мы постараемся внести ваш код в основную ветку проекта, или предложим вам лучшее решение.

 

Обновление версий

В Unity Asset Store мы отправляем только стабильные версии. Период обновления несколько месяцев.

Online Maps имеет встроенную систему обновления, с использованием которой вы можете обновить Online Maps до последней версии и получить ранний доступ ко всем версиям и обновлениям.

Выберите в меню «GameObject / Infinity Code / Online Maps / Check Updates» или «Online Maps / Help / Check Updates», чтобы открыть окно проверки обновлений. Укажите ваш Invoice Number, выберите канал обновления и нажмите «Check New Versions».

Вы можете узнать ваш Invoice Number в письме подтверждения заказа Unity Asset Store, или на странице пользователя в Unity Asset Store:

https://www.assetstore.unity3d.com/en/#!/account/transactions

 

Если с текущей версии было выпущено более 10 обновления в выбранном канале, то будут показаны только последние 10 обновлений.

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

Если у вас возникли проблемы с установкой обновления, то:

  1. Откройте пустую сцену.
  2. Удалите папку «Infinity Code / Online Maps».
  3. Импортируйте новую версию Online Maps в проект.

Если вы хотите вернуться на предыдущую версию Online Maps, то выберите канал «Stable Previous». Через этот канал вы сможете получить 10 предыдущих стабильных версий.

 

Online Maps автоматически проверяет обновления один раз в 24 часа. Если новая версия доступна, то вы увидите красную надпись в Online Maps Inspector. При нажатии на которую будет открыто окно проверки обновления.

Автоматическая проверка обновления не требует Invoice Number, и работает по выбранному каналу обновления. Если вы не выбирали канал обновления, то будут проверяться только стабильные версии.

 

Важно: Не бойтесь Online Maps Beta. Online Maps разрабатывается линейно, и все изменения (исправления ошибок, новые возможности и т.д.) сначала публикуются в beta разделе. Через 1-2 недели после выхода новой версии Unity, мы фиксируем все изменения в Online Maps Stable.

 

Решение проблем

Известные проблемы

Drawing API – полигон не имеет заливки в режиме «Tileset». Эта проблема связана с очень сложной триангуляцией полигона. Скорее всего, эта проблема никогда не будет решена. Если вам необходима возможность нарисовать залитый полигон, то используйте режим «рисование в текстуру».

 

Не работают карты Google Relief и Google Terrain на iOS – Иногда Unity + XCode используют поврежденный JPEG декодер. Прямого решения для этой проблемы нет.

Есть два обходных пути решить эту проблему:

  1. Использовать стилизованные карты Google. Как сделать такую карту смотрите в разделе «Styled Google Maps». Трюк в том, что стилизованные карты возвращают PNG, даже если стиль пустой.
  2. Включите «Troubleshooting / Software JPEG Decoder». Используйте этот вариант только если у вас не получилось использовать стилизованные карты, потому что программный декодер работает медленно.

 

Если «Sprite Mode - Single», автоматически возвращается к «Sprite Mode - None», выполните следующие действия:

  • Texture Type – Sprite;
  • Apply;
  • Texture Type – Advanced;
  • Read / Write Enabled – On;
  • Apply.

 

Tileset некорректно работает со Skybox, или имеет проблемы с отображением:

Online Maps Tileset Control Inspector / Materials & Shaders / Tileset Shader – Tileset Cutout Shader.

 

Ошибка «CS0576: Namespace `global::' contains a definition with same name as alias `XXXX'»:

В вашем проекте есть класс с именем, указанным в тексте ошибки. Очень плохая практика иметь в глобальном пространстве имен классы с именем как Unity классы или стандартные классы. Вы будете иметь проблемы со всеми ассетами, использующими этот класс.

Если вы создали этот класс, то переименуйте его.

Если это часть другого asset, то свяжитесь с разработчиком, и попросите исправить проблему.

 

Playmaker не сохраняет FSMObject (маркеры). Debug показывает «None»:

На самом деле FSMObjects сохраняются, и вы можете использовать их. Просто Playmaker не показывает это.

Это ошибка в Playmaker, и мы надеемся, что она когда-нибудь будет исправлена.

 

Unity Editor v5.3+ вылетает или вы видите ошибку GUISkin в консоли:

В Online Maps v2.3 (или меньше) используется GUISkin, который вызывает проблемы Unity v5.3+.

Возможно поврежден файл, или это какой-то баг в Unity Editor.

В Online Maps v2.4 мы удалили этот файл.

Обновите Online Maps до последней версии, и удалите из проекта GUISkin (если есть).

 

Вы включили поддержку asset, которого не имеете в проекте:

Импортируйте требуемый asset, или удалите соответствующий ключ в «Edit / Project Setting / Player / Other Settings / Scripting Define Symbols».

 

О KML

Online Maps не поддерживает KML, и скорее всего никогда не будет поддерживать это.

KML очень обширный формат, который имеет много возможностей, которые напрямую не относятся к картам.

Добавлять частичную поддержку KML мы считаем неверным.

Если вам нужны какие-то данные из KML, вы можете прочитать их самостоятельно и использовать это в карте.

 

Вашей проблемы нет в списке

Попробуйте обновиться на последнюю бета версию, с помощью встроенной системы обновления. Возможно, мы уже исправили эту проблему.

Если проблема осталась, пожалуйста, напишите о вашей проблеме нам в поддержку (support@infinity-code.com) или на форум (http://forum.infinity-code.com). Мы постараемся исправить все ошибки и выпустить обновление в кратчайшие сроки.

 

Поддержка

Мы осуществляем поддержку по email (support@infinity-code.com) или в форуме (http://forum.infinity-code.com) на английском и русском языках.

Если у вас что-то не работает, вы нашли ошибку, или у вас есть предложение, напишите нам.

При обращении укажите вашу версию Unity, OS и текущую версию Online Maps.

Мы стараемся отвечать на все обращения в службу поддержки в течении 24 часов.

Русский