Форум программистов, компьютерный форум, киберфорум
JavaScript: API
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
4 / 4 / 2
Регистрация: 20.05.2013
Сообщений: 97
1
Яндекс Карты API

Не корректно работают кастомные иконки Яндекс.Карты

25.10.2018, 22:04. Просмотров 970. Ответов 1

Здравствуйте, уважаемые форумчане!

Пытаюсь разработать генерацию карты с заранее определёнными по координатам точками. Сначала информация о точках на карте собирается в массив в PHP:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$mapData['features'][]=array(
    "type"=>"Feature",
    "id"=>$numb,
    "geometry"=>array(
        "type"=>"Point",
        "coordinates"=> Array(55,55),//взял координаты для примера
    ),
    "options"=>Array(
      "iconLayout" => 'default#image',
      "iconImageHref" => '/images/icon.png',
      "iconImageSize" => Array(24, 30),
      "iconImageOffset" => Array(10,10),
    ),
    "properties"=>array(
        "balloonContentBody" => $contentBody,
        "balloonContentFooter"=>"",
        "iconCaption"=> $item['NAME'],
        'iconContent' => '',
        "iconCaptionMaxWidth"=> '300',
        "hintContent"=>"<strong>".$item['NAME']."</strong>"
    ),
 
);
Далее, когда массив собран, преобразуем его в javascript-массив и вставляем в скрипт карты:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
$(document).ready(function(){
    ymaps.ready(init);
 
});
function init () {
    var dataR=<?=CUtil::PhpToJSObject($JsonData)?>;
    var myMap = new ymaps.Map('map', {
        center: [55.50, 37.64],
        zoom: 10,
        controls:['zoomControl']
    }, {
        searchControlProvider: 'yandex#search'
    }),
    objectManager = new ymaps.ObjectManager({
        clusterize: false,
        gridSize: 32,
        clusterDisableClickZoom: true
    });
    myMap.behaviors.disable('scrollZoom');
    myMap.geoObjects.add(objectManager);
    objectManager.add(dataR);
    myMap.setBounds(objectManager.getBounds(), {
        checkZoomRange: true
    });   
}
Проблема в том, что когда я указываю создание кастомной иконки для метки (элемент массива "options" в первом курсе php-кода), то она генерируется, но по нажатию на неё ничего не происходит - то есть контент "балуна" не открывается. Как только из основного массива мы убираем "options" - всё начинает работать корректно со стандартными метками.

В чем проблема, может кто-нибудь подсказать?)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
25.10.2018, 22:04
Ответы с готовыми решениями:

Яндекс карты не работают на сайте
Привет. Всё никак не могу разобраться с картами яндекса. Они вообще не появляются на сайте. Захожу...

Яндекс карты не работают - показывают сетку
Здравствуйте уважаемые форумчане! Делал все по этой документации:...

Java Android - сделать кнопку "показать адрес на карте", которая вызывает яндекс-карты или яндекс-навигатор и гугл-карты
Доброго дня, формучане! Подскажите, как сделать возможность из моего приложения при клике по...

Запустить яндекс карты и яндекс навигатор в оффлайн режиме под андройд
Народ кто-нить смог запустить яндекс карты и яндекс навигатор в оффлайн режиме под андройд,...

1
4 / 4 / 2
Регистрация: 20.05.2013
Сообщений: 97
26.10.2018, 11:51  [ТС] 2
Проблему удалось решить. В элемент массива options нужно было добавить массив iconShape.
У меня получилось так:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
$mapData['features'][]=array(
    "type"=>"Feature",
    "id"=>$numb,
    "geometry"=>array(
        "type"=>"Point",
        "coordinates"=> Array(55,55),//взял координаты для примера
    ),
    "options"=>Array(
      "iconLayout" => 'default#image',
      "iconImageHref" => '/images/icon.png',
      "iconImageSize" => Array(24, 30),
      "iconImageOffset" => Array(10,10),
      "iconShape" => Array(
            "type" => 'Circle',
            "coordinates" => array(0, 0),
            "radius" => 25
          ),
    ),
    "properties"=>array(
        "balloonContentBody" => $contentBody,
        "balloonContentFooter"=>"",
        "iconCaption"=> $item['NAME'],
        'iconContent' => '',
        "iconCaptionMaxWidth"=> '300',
        "hintContent"=>"<strong>".$item['NAME']."</strong>"
    ),
 
);
Подробнее: https://tech.yandex.ru/maps/doc/jsap...ions.iconShape
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.10.2018, 11:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Найти оптимальный zoom карты (яндекс карты)
Есть массив с координатами (Х, У). Как найти оптимальный zoom, (от 1го до 17) чтобы все точки...

Как корректно(правильно) создавать "кастомные" потоки в Spring
Можно ли запускать потоки таким образом и является ли данная реализация корректной? public class...

Яндекс карты и Яндекс MapKit
Передо мной стоят такие задачи: показать карту, на ней показать маркеры на определенных...

Иконки у части программ, для запуска которых нужны права администратора, выглядят не корректно
Т.к. часто приходится работать с флешками и не хочется ничего подцепить, включил UAC с...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.