Статьи

Google maps & jQuery: позиціонування карти

  1. 1) Джерело даних
  2. 2) Створюємо сторінку з картою
  3. 3) JavaScript код (main.js)
  4. висновок

Вітаю всіх!

У цій статті мова піде про створення невеликого додатки, що працює з картами google.

Ідея наступна. У вас в базі даних є якась інформація про об'єкти, які потрібно показати на мапі (наприклад, інформація про міста). потрібно:

    1) вивести список цих об'єктів;
    2) при кліці на будь-якому з об'єктів перемістити карту так щоб обраний об'єкт виявився в її центрі;
    3) показати на мапі розгорнуту інформацію про вибраний об'єкт.

Взагалі-то існує кілька готових рішень. В основному плагінів для різних CMS. Але часто підключення таких плагінів до існуючої системи займає більше часу, ніж написання власного рішення. Крім того, своє рішення простіше допрацьовувати і підтримувати.

Переходимо до реалізації.

Подивитися на результат можна на демонстраційної сторінці

А скачати код - на GitHub'е .

1) Джерело даних

Щоб не ускладнювати приклад, будемо вважати, що дані отримані з бази, перетворені в JSON формат, і ми можемо отримати їх за допомогою GET запиту. Наприклад, запит

GET /data.json HTTP / 1.1

Повинен повернути нам

[{ "City": "Київ", "lat": 50.5, "lng": 30.5, "desc": "столиця України"}, ...]

2) Створюємо сторінку з картою

<! DOCTYPE HTML> <html lang = "en-US"> <head> <meta charset = "UTF-8"> <title> Позиціонування Google Maps </ title> <link rel = "stylesheet" href = "styles. css "> </ head> <body> <header> Google maps: позиціонування </ header> <div class =" content "> <div id =" cities "> </ div> <div id =" map "> < / div> </ div> <footer> <a href="https://www.simplecoding.org/"> simplecoding.org </a> </ footer> <script src = "// maps.googleapis.com / maps / api / js? sensor = false "> </ script> <script src =" // ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js "> </ script> <script src = "main.js"> </ script> </ body> </ html>

На сторінці розміщені два блоки id = "cities" (для списку міст) і id = "map" (для карти). Підключені Google Maps, jQuery і скрипт main.js.

3) JavaScript код (main.js)

Тут виконується основна частина роботи.

$ (Function () {var map; var infoBox = new google.maps.InfoWindow (); var mapContainer = $ ( '# map'); mapContainer.width ('70% '). Height (500); function initialize ( ) {var mapOptions = {center: new google.maps.LatLng (50.5, 30.5), zoom: 8, mapTypeId: google.maps.MapTypeId.ROADMAP}; map = new google.maps.Map (document.getElementById ( "map "), mapOptions);} initialize (); $ .getJSON ( 'data.json', function (data) {if (data.length> 0) {var list = $ ( '<ul>'); $ .each (data, function (index, city) {var item = $ ( '<li>') .on ( 'click', city, showCity) .html (city.city); list.append (item);}); $ ( '# cities'). html (list);}}); function showCity (event) {var coords = new google.maps.LatLng (event.data.lat, event.data.lng); infoBox.setContent ( event.data.city + '-' + event.data.desc); infoBox.setPosition (coords); infoBox.open (map); map.setCenter (coords);}});

Перш за все, створюємо напис з інформацією про місто (InfoWindow) і встановлюємо розмір для контейнера карти (рядки 2-5).

Потім инициализируем карту (функція initialize, рядки 7-16). Цей код стандартний і взятий з офіційної документації . Ми вказуємо координати центру, наближення, тип карти і створюємо об'єкт google.maps.Map. У цей момент виконується отрисовка карти.

Тепер необхідно отримати дані і сформувати список міст.

Для цього відправляємо AJAX-запит за допомогою методу $ .getJSON (рядки 18-29). Зверніть увагу, що jQuery автоматично перетворює відповідь сервера в JSON формат. Тобто параметр data містить масив з даними, а не рядок.

Оброблювач відповіді перевіряє кількість елементів в масиві (міст) і якщо воно більше нуля формує список. При цьому кожному елементу li призначається обробник події onclick. Розглянемо цю частину трохи докладніше

$ ( '<Li>'). On ( 'click', city, showCity)

Метод on дозволяє приєднати обробник події до будь-якого об'єкта jQuery. У першому параметрі ми вказуємо тип події, в даному випадку це клік мишкою. У другому - об'єкт з інформацією про місто, який буде доступний оброблювачу в момент кліка. У третьому - ім'я функції-обробника, яка буде викликана при виникненні події.

Сформований список показуємо на сторінці (рядок 27).

Тепер розглянемо функцію showCity (рядки 31-37).

Вона викликається при кліці по назві міста. Дані про місто передаються в параметрі event.data.

Оскільки координати, назву і опис міста у нас є, то залишається тільки позиціонувати карту і показати InfoWindow. Для цього:

    1) Створюємо об'єкт google.maps.LatLng з координатами міста. Він потрібен для позиціонування і карти і InfoWindow.
    2) Формуємо текст, який потрібно показати в InfoWindow (рядок 33).
    3) За допомогою методів setPosition і open позиціонуємо і відображаємо InfoWindow на карті.
    4) Використовуємо метод setCenter для позиціонування карти.

висновок

Як бачите, весь код займає близько 40 рядків. При цьому велика частина - робота з API Google Maps, який добре документований. І при цьому можна з мінімальними зусиллями змінити код так, щоб він відповідав практично будь-якого формату даних, які зберігаються в базі.

Успіхів! І з наступаючими святами!

Com / maps / api / js?

Новости

Как создать фото из видео
Кризис заставляет искать дополнительные источники дохода. Одним из таких источников может стать торговля на валютном рынке Форекс. Но чтобы не потерять свои деньги необходимо работать с надежным брокером.

Как оформить группу в вконтакте видео
Дано хотел свой магазин в вк, но не знал с чего начать его делать. Так как хотелось не банальный магазин с кучей ссылок и фото, а красиво оформленный. С меню, с аватаркой. После просмотра видео создал