В предыдущей главе мы обсуждали, как загрузить базовую карту. Здесь мы увидим, как выбрать нужный тип карты.
Типы карт
Карты 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, которую можно использовать в автономном режиме. Приложение также поддерживает прокси-серверы. Кроме того, утилита предлагает координаты (широта и долгота) для каждого загруженного изображения.
Вы не можете использовать загруженные изображения в коммерческих приложениях. Они предназначены только для личного использования.
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]