В предыдущей главе мы обсуждали, как загрузить базовую карту. Здесь мы увидим, как выбрать нужный тип карты.
Типы карт
Карты Google предоставляют четыре типа карт. Они —
- ДОРОЖНАЯ КАРТА — это тип по умолчанию. Если вы не выбрали ни один из типов, это будет отображено. Показывает вид улицы выбранного региона.
- СПУТНИКОВЫЙ — это тип карты, который показывает спутниковые изображения выбранного региона.
- HYBRID — этот тип карты показывает главные улицы на спутниковых изображениях.
- TERRAIN — это тип карты, который показывает ландшафт и растительность
ДОРОЖНАЯ КАРТА — это тип по умолчанию. Если вы не выбрали ни один из типов, это будет отображено. Показывает вид улицы выбранного региона.
СПУТНИКОВЫЙ — это тип карты, который показывает спутниковые изображения выбранного региона.
HYBRID — этот тип карты показывает главные улицы на спутниковых изображениях.
TERRAIN — это тип карты, который показывает ландшафт и растительность
ПЛАГИН ГИБРИД (PLUG IN HYBRID) ЧТО ЭТО? ПЛАГИН ГИБРИДНЫЕ АВТОМОБИЛИ
Синтаксис
Чтобы выбрать один из этих типов карт, вы должны указать соответствующий идентификатор типа карты в опциях карты, как показано ниже —
var mapOptions = mapTypeId:google.maps.MapTypeId. Id of the required map type >;
Дорожная карта
В следующем примере показано, как выбрать карту типа ROADMAP —
src = «https://maps.googleapis.com/maps/api/js»> function loadMap() var mapOptions = center:new google.maps.LatLng(17.609993, 83.221436), zoom:9, mapTypeId:google.maps.MapTypeId. ROADMAP >; var map = new google.maps.Map(document.getElementById(«sample»),mapOptions); > google.maps.event.addDomListener(window, ‘load’, loadMap); id = «sample» style = «width:580px; height:400px;»>
Это даст следующий результат —
спутник
В следующем примере показано, как выбрать карту типа SATELLITE —
function loadMap() < var mapOptions = < center:new google.maps.LatLng(17.609993, 83.221436), zoom:9, mapTypeId:google.maps.MapTypeId. SATELLITE >; var map = new google.maps.Map(document.getElementById(«sample»),mapOptions); > google.maps.event.addDomListener(window, ‘load’, loadMap);
Это даст следующий результат —
Гибридный
В следующем примере показано, как выбрать карту типа HYBRID —
function loadMap() < var mapOptions = < center:new google.maps.LatLng(17.609993, 83.221436), zoom:9, mapTypeId:google.maps.MapTypeId. Hybrid >; var map = new google.maps.Map(document.getElementById(«sample»),mapOptions); > google.maps.event.addDomListener(window, ‘load’, loadMap);
Это даст следующий результат —
местность
В следующем примере показано, как выбрать карту типа TERRAIN —
function loadMap() < var mapOptions = < center:new google.maps.LatLng(17.609993, 83.221436), zoom:9, mapTypeId:google.maps.MapTypeId. TERRAIN >; var map = new google.maps.Map(document.getElementById(«sample»),mapOptions); > google.maps.event.addDomListener(window, ‘load’, loadMap);
Это даст следующий результат —
Открытая платформа .NET 7, Отказ от C и C++, Инженеры уходят из Apple в Google
Источник: coderlessons.com
Google Hybrid Maps Downloader 8.338
Google Hybrid Maps Downloader — это легкая, но эффективная утилита, которая позволяет вам легко загружать небольшие спутниковые изображения с метками (гибридная карта) из сервиса Google Maps. Программа позволит вам сохранить загруженное изображение на вашем локальном диске.
Программа включает в себя средство просмотра гибридных карт, которое позволяет просматривать загруженные изображения листов. У вас также есть возможность сшить изображения плитки, чтобы создать большую карту BMP, которую можно использовать в автономном режиме. Приложение также поддерживает прокси-серверы. Кроме того, утилита предлагает координаты (широта и долгота) для каждого загруженного изображения.
Вы не можете использовать загруженные изображения в коммерческих приложениях. Они предназначены только для личного использования.
Название Версия Разработчик Домашняя страница продукта Лицензия Загрузки прошлой недели Все время загрузки Имя файла Размер файла Контрольная сумма MD5 Поддержка ОС КатегорияGoogle Hybrid Maps Downloader |
8,338 |
AllAllSoft |
Google Hybrid Maps Downloader |
Бесплатно попробовать (Shareware) |
22 |
2991 |
ghmd_setup.exe |
7.8MB |
585A59778AC49782FBBE1C3FC32F9876 |
Windows All |
интернет |
Похожие программы
Google Earth 7.3.2.5776
Инструмент исследования, который предлагает виды карт, рельефа местности, трехмерных зданий, галактик и спутниковых изображений.
ExpertGPS 6.27
Загрузка, отображение и преобразование ваших данных с помощью ExpertGPS.
TwinkiePaste 2.90 Build 553
Быстро и просто набирайте часто используемый текст, приветствия, даты, стандартные ответы.
AllMyNotes Organizer Free Edition 4.00 Beta
Храните все свои документы или дневник в древовидной структуре.
Dictionary .NET 9.6.7009
Легкое, но мощное программное обеспечение для перевода.
Wifi Manager 2.4.4.900
Лучше управлять вашим беспроводным соединением с помощью этого инструмента.
Foxit Reader 9.5.0
Программа, которая позволяет вам легко печатать и просматривать PDF документы.
Источник: soft-gid.com
Гибридный способ отображения данных на картах google
В настоящей статье описывается метод отображения данных на интерактивных картах (maps.google.com, maps.yandex.ru).
В постах многоуважаемого Kashey тут и тут обсуждался метод отображения объектов на картах.
Изучив этот метод, я приступил к его осуществлению для крупнейшего автомобильного ресурса.
В ноябре, когда бОльшая часть кода была написана, случилось непредвиденное — гугл запустил сервис по картам, на котором картинки(тайлы) карт с результатами поиска формировались «на лету».
Эту технологию я назвал «технологией прыщей» — результаты поиска отображаются мелкими красными точками, нанесенными непосредственно в png-картинку, являющимся отдельным слоем поверх слоя с картой. Посмотреть можно тут.
Отображение данных отдельным слоем уже давно применялся, например, на wikimapia.org. Основным прорывом гугла было то, что картинки с «прыщами» формируются «на лету» и не кэшируются на сервере. Это требует больших серверных затрат.
Я провел свои тесты, и выяснил, что современный сервер рисует до 160 тайлов в секунду. Сопоставив нагрузки, стало понятно, что один сервер может обслуживать не более сотни одновременно подключенных пользователей, что крайне мало. Более того, у технологии имеются также несколько существенных минусов:
- большое количество запросов к серверу (на каждый тайл)
- необходимость выборки объектов для отображения для каждого запроса на тайл
Одновременно есть важный плюс — возможность отображения большого количества объектов без «кластеризации» и нагрузки на клиента и DOM браузера.
Кстати, в только что запущенном realty.yandex.ru карты сделаны как раз на DOM (то есть каждый маркер — это DIV). Поэтому получается вот такое
Походите по карте…
В результате последующих изысканий за основу была принята т.н. «гибридная» система.
Суть «гибрида» заключается в том, что в зависимости от возможностей браузера (конечно, речь про ie), используется свой способ отображения данных.
Так, например, все современные браузеры (кроме ie до 9 версии) поддерживают тэг canvas.
Для этих браузеров я применил технологию рисования слоя с объектами непосредственно на клиенте.
Таким образом, при движении/зуме карты происходит только 1 запрос к серверу. После получения данных, браузер сам рисует слой.
Второй способ отображения — для ie8 и некоторых других браузеров — использует dataUrl. Опять же на каждое движение — 1 запрос. Картинки рисуются на сервере и отправляются вместе с данными одним xml файлом.
На сегодняшний день таких запросов — около 18%. понятно, что постепенно процент будет снижаться.
Третий способ — классика. Сначала передаются данные, а потом запрашиваются картинки — на каждую картинку свой запрос. Это для ie 7 и ниже. Таких — около 6%. Именно этот способ используется в гуглокартах.
Итого, используя такой гибрид, получили уменьшение количества запросов по сравнению с «классикой» в 4 раза, нагрузку на сервер — также почти в 4 раза.
Сейчас на моих картах отображаются максимум 100 объектов на тайл. При среднем размере окна — это до 2400 «прыщей».
Выборка и кэширование
Отдельно была решена проблема с поиском данных.
Если бы было все просто и надо было выводить только данные по нескольким заранее известным категориям, городить огород не было бы смысла. Но задача была в том, чтобы вывод был по ключевым словам в поисковой строке. Конечно, для этого подключили sphinx.
Но проблема была в другом:
Каждый раз при движении карты необходимо снова формировать запрос, прогонять его через парсер и sphinx, потом через mysql получать точки… Надо как-то это упрощать…
В результате был создан кэширующий движок на php, использующий memcache.
Происходит все следующим образом:
Сервер получает поисковую строку (например, «Дилеры audi»), парсит ее и отправляет в sphinx. Sphinx отдает результат поиска, затем формируется mysql-запрос на получение точек и выполняется. Все полученные точки пакуются и отправляются в мемкэш.
Так, для 10000 найденных точек размер кэша составляет около 1mb. По задумке — это максимальный размер.
Далее, когда карта обращается за точками, из memcache подгружаются данные и очень быстро ищутся.
Очень быстро — это до 0,02 сек на 10000 точек. В кэширующем классе для выборок используются только нативные php-функции, никаких циклов с перебором значений и т.д.
Кэш живет не более 3 минут. Если в кэше отсутствуют необходимые данные, запрос опять формируется, выполняется и кэшируется. Для этого в запросе на тайл и данные для карты дублируется поисковая строка.
Вообще, в кэш-классе предусмотрена возможность кэширования различными способами, в том числе и дисковое кэширование. Для случая, когда надо использовать не поисковую строку, а меню с категориями, различные списки и галки. Если количество видов запросов будет конечным — подойдет этот способ.
Маркеры
Управляющий картами серверный класс при инициализации принимает спрайт с маркерами и их описанием.
Описание — это размер, положение в спрайте, якорь, тень и т.д.
Соответственно, в спрайт можно набить очень большое количество маркеров и все их использовать на карте. Размер маркера для моей системы — до 200х200, что более чем достаточно.
При передаче данных в движок, для каждой точки можно задать свой маркер (из спрайта) с тенью и hover. И он будет отображен (одним из 3-х способов).
Уровни карт
Решено было использовать 3 уровня карт — страна, регион, город. На уровне «страна» мы показываем маркеры столиц регионов, на уровне «регион» — города, «город» — точки («прыщи»).
Количество уровней регулируется настройками.
А как же Яндекс?
В написанном движке при небольших преобразованиях можно встроить поддержку яндекс-карт.
Но задача такая не ставилась, поэтому и не реализовывалась.
На сегодняшний день проект написан на 80%, но основные идеи уже воплощены.
Посмотреть можно здесь russia.auto.ru
и здесь club-lexus.ru/partners/index.php?city=1https://habr.com/ru/post/115198/» target=»_blank»]habr.com[/mask_link]