From ca58f148ec9340a16e2be7fe42176f68ef321242 Mon Sep 17 00:00:00 2001 From: Ilyas Ronef Date: Tue, 17 Sep 2013 01:22:35 +0600 Subject: [PATCH] Initial commit --- README.md | 3 ++ assets/js/jquery.ddYMap-1.0.min.js | 17 +++++++ ddYMap.php | 81 ++++++++++++++++++++++++++++++ 3 files changed, 101 insertions(+) create mode 100644 README.md create mode 100644 assets/js/jquery.ddYMap-1.0.min.js create mode 100644 ddYMap.php diff --git a/README.md b/README.md new file mode 100644 index 0000000..73960dc --- /dev/null +++ b/README.md @@ -0,0 +1,3 @@ +# ddYMap + +Visit the following [link](http://code.divandesign.biz/modx/ddymap) to read the documentation, instructions & changelog. \ No newline at end of file diff --git a/assets/js/jquery.ddYMap-1.0.min.js b/assets/js/jquery.ddYMap-1.0.min.js new file mode 100644 index 0000000..d16c974 --- /dev/null +++ b/assets/js/jquery.ddYMap-1.0.min.js @@ -0,0 +1,17 @@ +/** + * jQuery ddYMap Plugin + * @version: 1.0 (2013-07-12) + * + * @uses jQuery 1.10.2 + * + * @param latLng {array} - Координаты на карте (Lat и Lng). @required + * @param elementId {string} - ID контейнера, где будет находиться Яндекс.Карта. По умолчанию: 'map'. + * @param zoom {integer} - Масштаб карты по умолчанию. По умолчанию: 15. + * @param scrollZoom {boolean} - Разрешёно ли изменение масштаба карты колесом мыши? По умолчанию: false. + * @param placemarkOptions {plain object} - Опции метки. + * + * @copyright 2013, DivanDesign + * http://www.DivanDesign.biz + */ + +(function(b){b.extend(!0,{ddYMap:{defaults:{latLng:[],elementId:"map",zoom:15,scrollZoom:!1,placemarkOptions:{}},init:function(a){a=b.extend({},this.defaults,a);b.isArray(a.latLng)&&2==a.latLng.length&&ymaps.ready(function(){var b=new ymaps.Map(a.elementId,{center:a.latLng,zoom:a.zoom});b.controls.add("zoomControl").add("typeSelector").add("scaleLine").add("mapTools");a.scrollZoom&&b.behaviors.enable("scrollZoom");b.geoObjects.add(new ymaps.Placemark(a.latLng,{},a.placemarkOptions))})}}})})(jQuery); \ No newline at end of file diff --git a/ddYMap.php b/ddYMap.php new file mode 100644 index 0000000..f4de23e --- /dev/null +++ b/ddYMap.php @@ -0,0 +1,81 @@ +runSnippet('ddGetDocumentField', array( + 'id' => $getId, + 'field' => $getField + )); +} + +//Если координаты заданы и не пустые +if (!empty($geoPos)){ + $mapElementId = isset($mapElementId) ? $mapElementId : 'map'; + + //Подключаем библиотеку карт + $modx->regClientStartupScript('http://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU', array('name' => 'api-maps.yandex.ru', 'version' => '2.0-stable')); + //Подключаем $.ddYMap + $modx->regClientStartupScript('assets/js/jquery.ddYMap-1.0.min.js', array('name' => '$.ddYMap', 'version' => '1.0')); + + //Инлайн-скрипт инициализации + $inlineScript = '$(function(){$.ddYMap.init({elementId: "'.$mapElementId.'", latLng: new Array('.$geoPos.')'; + + //Если иконка задана + if (!empty($icon)){ + //путь иконки на сервере + $icon = ltrim($icon, '/'); + + if (file_exists($icon)){ + //Получим её размеры + $iconSize = getimagesize($icon); + + //если смещение не задано сделаем над опорной точкой ценруя по ширине + $resultIconOffset = array($iconSize[0] / -2, $iconSize[1] * -1); + if (!empty($iconOffset)){ + $iconOffset = explode(',', $iconOffset); + //если задано сделает относительно положения по умолчанию + $resultIconOffset[0] += $iconOffset[0]; + $resultIconOffset[1] += $iconOffset[1]; + } + //Позиционируем точку по центру иконки + $inlineScript .= ', placemarkOptions: { + iconImageHref: "'.$icon.'", + iconImageSize: ['.$iconSize[0].', '.$iconSize[1].'], + iconImageOffset: ['.$resultIconOffset[0].', '.$resultIconOffset[1].'] + }'; + } + } + + //Если нужен скролл колесом мыши, упомянем об этом + if (isset($scrollZoom) && $scrollZoom == 1){$inlineScript .= ', scrollZoom: true';} + + $inlineScript .= '});});'; + + //Подключаем инлайн-скрипт с инициализацией + $modx->regClientStartupScript('', array('name' => '$.ddYMap.inline', 'version' => '1.0', 'plaintext' => true)); +} +?> \ No newline at end of file