From 3a9a5220a1716551655a5d4ba90a1f9a8f6662bc Mon Sep 17 00:00:00 2001 From: Ilyas Ronef Date: Tue, 27 Feb 2024 18:13:46 +0400 Subject: [PATCH 1/2] =?UTF-8?q?+=20Parameters=20=E2=86=92=20`params.marker?= =?UTF-8?q?s[i].icon`:=20The=20new=20optional=20parameter.=20Allows=20you?= =?UTF-8?q?=20to=20customaize=20marker=20icons.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 25 +++++++++++++++++++++++++ README_ru.md | 25 +++++++++++++++++++++++++ jQuery.ddMap.js | 34 +++++++++++++++++++++++++++++++++- jQuery.ddMap.min.js | 3 +-- 4 files changed, 84 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 3640910..1bfdde7 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,31 @@ That's all! * Valid values: `string` * Default value: `''` +* `params.markers[i].icon` + * Desctription: Custom marker icon data. + * Valid values: `objectPlain` + * Default value: — (default icon) + +* `params.markers[i].icon.src` + * Desctription: Address of an image. + * Valid values: `string` + * **Required** + +* `params.markers[i].icon.size` + * Desctription: Icon size. + * Valid values: `objectPlain` + * **Required** + +* `params.markers[i].icon.size.width` + * Desctription: Image width in px. + * Valid values: `integer` + * **Required** + +* `params.markers[i].icon.size.height` + * Desctription: Image height in px. + * Valid values: `integer` + * **Required** + * `params.apiKey` * Desctription: Yandex Maps API key. _For now it is working without key, but Yandex mark it as required, so it is recommended to set it._ diff --git a/README_ru.md b/README_ru.md index 5b2365a..09b7c33 100644 --- a/README_ru.md +++ b/README_ru.md @@ -99,6 +99,31 @@ $('.map').ddMap({ * Допустимые значения: `string` * Значение по умолчанию: `''` +* `params.markers[i].icon` + * Описание: Кастомная иконка маркера. + * Допустимые значения: `objectPlain` + * Значение по умолчанию: — (дефолтная иконка) + +* `params.markers[i].icon.src` + * Описание: Адрес изображения. + * Допустимые значения: `string` + * **Обязателен** + +* `params.markers[i].icon.size` + * Описание: Размер изображения. + * Допустимые значения: `objectPlain` + * **Обязателен** + +* `params.markers[i].icon.size.width` + * Описание: Ширина в px. + * Допустимые значения: `integer` + * **Обязателен** + +* `params.markers[i].icon.size.height` + * Описание: Высота px. + * Допустимые значения: `integer` + * **Обязателен** + * `params.apiKey` * Описание: API-ключ Яндекс Карт. _Пока что работает и без ключа, но Яндекс декларирует его обязательным, так что рекомендуется использовать._ diff --git a/jQuery.ddMap.js b/jQuery.ddMap.js index 0a35f28..96db3fc 100644 --- a/jQuery.ddMap.js +++ b/jQuery.ddMap.js @@ -233,6 +233,38 @@ Array.isArray(markerData.latLng) && markerData.latLng.length == 2 ){ + var + markerOptions = $.extend( + true, + {}, + theInstance.markerOptions + ) + ; + + //If marker has a custom icon + if ( + typeof markerData.icon == 'object' + && typeof markerData.icon.src == 'string' + && markerData.icon.src.length > 0 + && typeof markerData.icon.size == 'object' + && $.isNumeric(markerData.icon.size.width) + && $.isNumeric(markerData.icon.size.height) + ){ + markerData.icon.size.width = parseInt(markerData.icon.size.width); + markerData.icon.size.height = parseInt(markerData.icon.size.height); + + markerOptions.iconLayout = 'default#image'; + markerOptions.iconImageHref = markerData.icon.src; + markerOptions.iconImageSize = [ + markerData.icon.size.width, + markerData.icon.size.height + ]; + markerOptions.iconImageOffset = [ + markerData.icon.size.width / -2, + markerData.icon.size.height * -1 + ]; + } + //Создаём метку geoObjects.add( new ymaps.Placemark( @@ -243,7 +275,7 @@ $.trim(markerData.content) : '' }, - theInstance.markerOptions + markerOptions ) ); } diff --git a/jQuery.ddMap.min.js b/jQuery.ddMap.min.js index c0a65d6..c4bf811 100644 --- a/jQuery.ddMap.min.js +++ b/jQuery.ddMap.min.js @@ -1,2 +1 @@ -/* jQuery.ddMap v2.0 (2023-05-22) | © https://Ronef.ru */ -!function(e){class t{static isStaticInited=!1;static initStatic(t){if(!this.isStaticInited&&(this.isStaticInited=!0,"undefined"==typeof ymaps)){var n="//api-maps.yandex.ru/2.1/?lang="+navigator.language;t.apiKey.length>0&&(n+="&apikey="+t.apiKey),e("head").append(' - + ``` You may not to think about including Yandex Map script, the library will do it automatically. diff --git a/README_ru.md b/README_ru.md index 09b7c33..089e8a4 100644 --- a/README_ru.md +++ b/README_ru.md @@ -27,7 +27,7 @@ - + ``` Можно не думать о подключении скрипта Яндекс Карт, библиотека сделает это автоматически. diff --git a/jQuery.ddMap.js b/jQuery.ddMap.js index 96db3fc..160caf7 100644 --- a/jQuery.ddMap.js +++ b/jQuery.ddMap.js @@ -1,12 +1,12 @@ /** * jQuery.ddMap - * @version 2.0 (2023-05-22) + * @version 2.1 (2024-02-27) * * @see {@link README.md} * * @link https://code.divandesign.ru/jquery/ddmap * - * @copyright 2013–2023 [Ronef]{@link https://Ronef.ru } + * @copyright 2013–2024 [Ronef]{@link https://Ronef.ru } */ (function($){ diff --git a/jQuery.ddMap.min.js b/jQuery.ddMap.min.js index c4bf811..881ee99 100644 --- a/jQuery.ddMap.min.js +++ b/jQuery.ddMap.min.js @@ -1 +1,2 @@ +/* jQuery.ddMap v2.1 (2024-02-27) | © https://Ronef.ru */ !function(e){class t{static isStaticInited=!1;static initStatic(t){if(!this.isStaticInited&&(this.isStaticInited=!0,"undefined"==typeof ymaps)){var n="//api-maps.yandex.ru/2.1/?lang="+navigator.language;t.apiKey.length>0&&(n+="&apikey="+t.apiKey),e("head").append('