29
Symfony2 + Google Map и немного Rich Marker

Google Map маркеры вместе с Symfony2

Embed Size (px)

DESCRIPTION

Стилизация маркеров Google Map используя CSS. Управление маркерами с использованием Symfony2 PHP Framework.

Citation preview

Page 1: Google Map маркеры вместе с Symfony2

Symfony2 + Google Map и немного Rich Marker

Page 2: Google Map маркеры вместе с Symfony2

Что будем использовать?

Composerhttp://getcomposer.org/

Symfony2http://symfony.com/

Liip/Imaginehttps://github.com/liip/LiipImagineBundle

RichMarker для Google Maps v3http://google-maps-utility-library-v3.googlecode.com/svn/trunk/richmarker/docs/reference.html

Google Map APIhttps://developers.google.com/maps/

Select2 JShttp://ivaynberg.github.io/select2/

и многое другое...

Page 3: Google Map маркеры вместе с Symfony2

PHPStorm IDE

Page 4: Google Map маркеры вместе с Symfony2
Page 5: Google Map маркеры вместе с Symfony2

Творим!

http://getcomposer.org

Page 6: Google Map маркеры вместе с Symfony2

Конфигурация зависимостей вcomposer.json https://packagist.org

Page 7: Google Map маркеры вместе с Symfony2

В окне терминала PHPStorm пишем следующее:

curl -s https://getcomposer.org/installer | php

php composer.phar install

cp app/config/parameters.yml.dist app/config/parameters.yml

nano app/config/parameters.yml

php app/check.php

php app/console doctrine:schema:create

php app/console assetic:dump

Установка Symfony

Page 8: Google Map маркеры вместе с Symfony2

Структура файлов Symfony

Page 9: Google Map маркеры вместе с Symfony2

В тэг <head> основного шаблона поместить:<script src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false"></script>

В тэг <body> где нужна карта размещаем: <div id="map_canvas"></div>

Подключение Google Maps API

Page 10: Google Map маркеры вместе с Symfony2
Page 11: Google Map маркеры вместе с Symfony2

В случае если дневной трафик переваливает за 25000 показов, подключать карту нужно будет с API_KEY через Google APIs Console. Тогда Google Map API будет для вас платным.

Ограничения по использованию

Page 12: Google Map маркеры вместе с Symfony2

var g = google.maps;

map.js

Создаем свой локальный map.js файл и в нём будем писать логику работы с картой. Его так же подключаем в <head>, только после подключения Google Map API.

Page 13: Google Map маркеры вместе с Symfony2

map = new g.Map(document.getElementById("map_canvas"), mapOptions);

Инициализация карты в div и создание маркера

Page 14: Google Map маркеры вместе с Symfony2

var mapOptions = { draggableCursor: 'auto', draggingCursor: 'move', disableDoubleClickZoom: true, panControl: false, zoomControl: true, zoomControlOptions: { style: g.ZoomControlStyle.LARGE, position: g.ControlPosition.LEFT_CENTER }, scaleControl: true, scaleControlOptions: { position: g.ControlPosition.LEFT_BOTTOM }, streetViewControl: false, overviewMapControl: false, center: new g.LatLng(48.850258199721495, 2.362060546875), zoom: 6, mapTypeControlOptions: { mapTypeIds: [g.MapTypeId.SATELLITE, 'map_style'], style: g.MapTypeControlStyle.HORIZONTAL_BAR, position: g.ControlPosition.BOTTOM_LEFT } };

mapOptions

Page 15: Google Map маркеры вместе с Symfony2

Обработчики событий

Page 16: Google Map маркеры вместе с Symfony2
Page 17: Google Map маркеры вместе с Symfony2

Класс RichMarker расширяется от OverlayView и позволяет создавать маркер не просто картинкой, а HTML-кодом, но объявляется так же просто как и обычный маркер.

Вот мы и добрались до DOM.

RichMarker

http://google-maps-utility-library-v3.googlecode.com/svn/trunk/richmarker/docs/reference.html

Page 18: Google Map маркеры вместе с Symfony2

Функция drawOBJMarker вызывается функцией поиска и передает туда объект, который требуется отобразить на карте:

Создание маркера с HTML

Page 19: Google Map маркеры вместе с Symfony2

Сейчас я совершил поиск по тэгу “monument”. Появилось три кружочка.

Вывод на карту RichMarker-ов

Page 20: Google Map маркеры вместе с Symfony2

map.css

Page 21: Google Map маркеры вместе с Symfony2
Page 22: Google Map маркеры вместе с Symfony2
Page 23: Google Map маркеры вместе с Symfony2

OBJFormType.php

Page 24: Google Map маркеры вместе с Symfony2

Сущность объекта маркера

Page 25: Google Map маркеры вместе с Symfony2

Поле изображения в сущности маркера объекта

Конфигурация бандла VichUploaderBundle

Page 26: Google Map маркеры вместе с Symfony2

В процессе отрисовки маркеров существует несколько размеров одной и той же картинки для поиска и для увеличенной после нажатия на маркер объекта. LiipImagine создаёт миниатюры, следит чтобы картинка вписывалась в нужные размеры.

Изображения обрабатываетLiipImagineBundle

Page 27: Google Map маркеры вместе с Symfony2
Page 28: Google Map маркеры вместе с Symfony2

app/config.yml

Конфигурация liip_imagine

Page 29: Google Map маркеры вместе с Symfony2

Если вы новичок в Symfony, можете получить представление на сайте видео-уроков:

https://knpuniversity.com

Это поможет вам лучше понимать структуру Symfony Framework