Форум программистов, компьютерный форум, киберфорум
JavaScript: API
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.56/48: Рейтинг темы: голосов - 48, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 62
1
Яндекс Карты API

Отображение объектов на Yandex карте

07.05.2016, 18:23. Показов 9089. Ответов 24
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть такая задача:
на странице формируется выборка div-ов с классом .adress. в каждом div свое html содержимое(адреса);
HTML5
1
<span class="adress">г.Минск пр.Победителей 79</span><br>
скрипт при совпадении адреса добавляет метку на карту

Javascript
1
2
3
4
5
6
7
8
9
10
11
var adress=$('.adress').html();
           if (adress=="г.Минск пр.Победителей 79"){
       
        var myPlacemark = new ymaps.Placemark(
            // Координаты метки
            [53.931122, 27.505776] ,{
                hintContent: 'Бэби клаб'
            });
 
        myMap.geoObjects.add(myPlacemark);
    };
для одного адреса работает, но их как и .adress будет много.

Предполагаю что надо создать массив: "адрес - координаты метки" и перебирать его на совпадение для каждого класса .adress ?;
как это реализовать подскажите пожалуйсто!
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
07.05.2016, 18:23
Ответы с готовыми решениями:

вывести метки на yandex-карте согласно результатам поиска объектов
Добрый день, такой очень &quot;горящий&quot; вопрос: на странице формируется результат поиска объектов php...

Спавн объектов на карте
имеется 2d карта уровня, на ней игроки и прочие объекты. Новые игроки и объекты спавнятся по...

Размещение объектов на карте
Здравствуйте! У меня такой вопрос, подгружаю фоновую картинку карты и располагаю её в JFrame...

Кластеризация объектов на Яндекс карте
Доброго времени суток! Вывожу заранее заданные объекты на яндекс карте. Объекты заданы следующим...

24
2232 / 1278 / 611
Регистрация: 23.08.2015
Сообщений: 3,228
07.05.2016, 22:50 2
А что обязательно координаты указывать в метке? можно же просто адрес писать. Но если использовать координаты Я бы сделал что-то типо такого
HTML5
1
<span class="address" data-placemark="53.931122,27.505776" data-hint="Бэби клаб">г.Минск пр.Победителей 79</span>
Javascript
1
2
3
4
5
6
7
8
9
$(".address").each(function(){
var coords =  $(this).attr("data-placemark").split(',');
var hint = $(this).attr("data-hint");
  myMap.geoObjects.add(new ymaps.Placemark(
            // Координаты метки
           coords  ,{
                hintContent: hint
            }););
})
Код не проверял, но думаю идея понятна.

Добавлено через 19 минут
Хотя нет. Если просто нужно добавить метки при загрузки страницы, то
формируется массив в php c координатами и хинтом, потом через foreach просто выводите метки.
PHP
1
$arAddresses = array(array("COORDS" => "53.931122,27.505776", "HINT"=>"Бэби клаб"), array(...), и т.д.);
Javascript
1
2
3
4
5
6
<?foreach($arAddresses as $arArddress):?>
myMap.geoObjects.add(new ymaps.Placemark(
  [<?=$arArddress["COORDS"]?>] ,{
                hintContent: '<?=$arArddress["HINT"]?>'
            }););
<?endforeach;?>
Или добавляете их в коллекцию потом все вместе выводите. Там сами смотрите.
0
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 62
08.05.2016, 14:57  [ТС] 3
sad67man, не просто добавить метки. тут поиск по параметрам, в зависимости от которых будут загружены .adress с определенными адресами(html содержимым). адресов с координатами много, но добавиться должны только те метки адреса которых загрузились. отсюда и условие
Javascript
1
$('.adress').html()==("адрес")
.

Добавлено через 8 часов 29 минут
вот вариант с массивом и условием:
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var groups=new Object();
    groups["г.Минск пр.Победителей 79"]="[53.931122, 27.505776]";
    groups["г Минск ул Сурганова д82"] ="[53.931201, 27.581666]";
     groups["г Минск ул.Свердлова д32а"] ="[53.890341, 27.557825]";
 
var adress=$('.adress').html();
       for(var x in groups){
           if (adress == x){
     myMap.geoObjects.add(new ymaps.Placemark(
            // Координаты метки
           groups[x]  ,{
                hintContent: 'Бэби клаб'
            }));
 
    }};
вродебы все читается правильно, но метку не ставит...помогите ошибку найти пожааалсто
0
2232 / 1278 / 611
Регистрация: 23.08.2015
Сообщений: 3,228
08.05.2016, 15:50 4
Так у вас координаты просто строкой идут, а нужен массив.
Javascript
1
groups["г.Минск пр.Победителей 79"]=[53.931122, 27.505776];
0
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 62
08.05.2016, 16:09  [ТС] 5
sad67man, все равно не ставит метки..
0
2232 / 1278 / 611
Регистрация: 23.08.2015
Сообщений: 3,228
08.05.2016, 16:24 6
А пишет в консоле какую-нибудь ошибку?
0
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 62
08.05.2016, 16:33  [ТС] 7
нет не пишет, console.log(groups[x]); срабатывает до if...
0
2232 / 1278 / 611
Регистрация: 23.08.2015
Сообщений: 3,228
08.05.2016, 16:59 8
Лучший ответ Сообщение было отмечено hrutsik как решение

Решение

HTML5
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
29
<script src="http://api-maps.yandex.ru/2.1.35/?lang=ru_RU&load=package.full&mode=debug" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
    var targetCoords = [53.931122, 27.505776],
          mapMini;
    ymaps.ready(function () {    
        myMap = new ymaps.Map("myMap",{center: targetCoords,zoom: 10});
    })
    function addPlacemarks(){
    var groups=new Object();
       groups["г.Минск пр.Победителей 79"]=[53.931122, 27.505776];
       groups["г Минск ул Сурганова д82"] =[53.931201, 27.581666];
       groups["г Минск ул.Свердлова д32а"] =[53.890341, 27.557825];
 
    $('.adress').each(function(){
        var adress = $(this).text();
        for(var x in groups){
 
        if (adress == x){
            myMap.geoObjects.add(new ymaps.Placemark(groups[x]  ,{hintContent: 'Бэби клаб'}));
        }};
    })
       
}
</script>
<span class="adress">г.Минск пр.Победителей 79</span><br>
<span class="adress">г Минск ул Сурганова д82</span><br>
<button onclick="addPlacemarks()">Добавить метки</button>
<div id="myMap" style="width: 100%; height: 500px"></div>
1
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 62
08.05.2016, 17:01  [ТС] 9
sad67man, спасибо!!! изучаю
0
2232 / 1278 / 611
Регистрация: 23.08.2015
Сообщений: 3,228
08.05.2016, 17:12 10
А как у вас выборка div-ов делается, из БД или как? думаю лучше там покопаться, чем этот подход с массивом.
0
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 62
08.05.2016, 17:36  [ТС] 11
да из бд , за php еще не бралась думала на js проще сделать
0
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 62
14.06.2016, 20:09  [ТС] 12
добрый день, очень нужна помощь: скрипт приведенный выше работает по нажатию кнопки, нужно чтобы он метки добавлялись просто при загрузке страницы сразу.
0
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
14.06.2016, 20:55 13
hrutsik,
PHP/HTML
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
<script src="http://api-maps.yandex.ru/2.1.35/?lang=ru_RU&load=package.full&mode=debug" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
    var targetCoords = [53.931122, 27.505776],
          mapMini;
    ymaps.ready(function () {    
        myMap = new ymaps.Map("myMap",{center: targetCoords,zoom: 10});
    });
    var groups=new Object();
       groups["г.Минск пр.Победителей 79"]=[53.931122, 27.505776];
       groups["г Минск ул Сурганова д82"] =[53.931201, 27.581666];
       groups["г Минск ул.Свердлова д32а"] =[53.890341, 27.557825];
 
    $('.adress').each(function(){
        var adress = $(this).text();
        for(var x in groups){
 
        if (adress == x){
            myMap.geoObjects.add(new ymaps.Placemark(groups[x]  ,{hintContent: 'Бэби клаб'}));
        }};
    });
</script>
<span class="adress">г.Минск пр.Победителей 79</span><br>
<span class="adress">г Минск ул Сурганова д82</span><br>
<button onclick="addPlacemarks()">Добавить метки</button>
<div id="myMap" style="width: 100%; height: 500px"></div>
0
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 62
14.06.2016, 21:00  [ТС] 14
BANO, что-то воопще не отображает меток...я передаю в groups координаты из бд с пом php, при этом метки должны отразиться на карте..но не выходит((
0
2232 / 1278 / 611
Регистрация: 23.08.2015
Сообщений: 3,228
14.06.2016, 21:08 15
hrutsik, В консоле есть ошибки какие-нибудь?

Добавлено через 3 минуты
hrutsik, Если вы формируете координаты в php, то наверное уже перебирать на совпадение для каждого класса .adress не нужно уже?
0
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 62
14.06.2016, 21:23  [ТС] 16
в консоли чисто,
да проверять по идее уже не надо, но как их вывести если метка не одна?
0
2232 / 1278 / 611
Регистрация: 23.08.2015
Сообщений: 3,228
14.06.2016, 21:27 17
hrutsik, Если просто нужно поставить метки на карту, без всяких перебираний, то так..
Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
var targetCoords = [53.931122, 27.505776],
  myMap,
  myCollection;
ymaps.ready(function() {
  myMap = new ymaps.Map("myMap", {
    center: targetCoords,
    zoom: 10
  });
  // Создаем коллекцию геообъектов.
  myCollection = new ymaps.GeoObjectCollection();
  // Добавляем метки в коллекцию.
  myCollection.add(new ymaps.Placemark([53.931122, 27.505776]));
  myCollection.add(new ymaps.Placemark([53.931201, 27.581666]));
  myCollection.add(new ymaps.Placemark([53.890341, 27.557825]));
  // Добавляем коллекцию на карту.
  myMap.geoObjects.add(myCollection);
  // Устанавливаем карте центр и масштаб так, чтобы охватить коллекцию целиком.
  myMap.setBounds(myCollection.getBounds());
});
1
Ренегат
Эксперт HTML/CSS
1740 / 1085 / 386
Регистрация: 06.08.2014
Сообщений: 5,203
Записей в блоге: 1
14.06.2016, 21:28 18
sad67man, ну конечно, вот я дебил
PHP/HTML
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
29
<script src="http://api-maps.yandex.ru/2.1.35/?lang=ru_RU&load=package.full&mode=debug" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
    var targetCoords = [53.931122, 27.505776],
          mapMini;
    ymaps.ready(function () {    
        myMap = new ymaps.Map("myMap",{center: targetCoords,zoom: 10});
        $('.adress').each(function(){
            var adress = $(this).text();
            for(var x in groups){
     
            if (adress == x){
                myMap.geoObjects.add(new ymaps.Placemark(groups[x]  ,{hintContent: 'Бэби клаб'}));
            }};
        });
    });
    var groups=new Object();
       groups["г.Минск пр.Победителей 79"]=[53.931122, 27.505776];
       groups["г Минск ул Сурганова д82"] =[53.931201, 27.581666];
       groups["г Минск ул.Свердлова д32а"] =[53.890341, 27.557825];
 
    
});
</script>
<span class="adress">г.Минск пр.Победителей 79</span><br>
<span class="adress">г Минск ул Сурганова д82</span><br>
<button onclick="addPlacemarks()">Добавить метки</button>
<div id="myMap" style="width: 100%; height: 500px"></div>
1
0 / 0 / 0
Регистрация: 08.01.2015
Сообщений: 62
14.06.2016, 21:46  [ТС] 19
sad67man, метки будут ставиться не статичные, в зависимости от выбранных объектов.
постойте, я уже в var groups=new Object(); передаю координаты...может с ним также можно сделать?

BANO, вроде сработало

Добавлено через 5 минут
Спасибо Огромное, добрые люди, пробую прикрутить)

Добавлено через 6 минут
И правда class="adress" уже не актуален сорри не поняла что на нем все завязано..,
вопщим просто передаю координаты в var groups=new Object() и потом их нужно вывести на карте как???
0
2232 / 1278 / 611
Регистрация: 23.08.2015
Сообщений: 3,228
14.06.2016, 21:48 20
hrutsik, Вообще с коллекциями удобнее работать. Есть ряд преимуществ.
0
14.06.2016, 21:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
14.06.2016, 21:48
Помогаю со студенческими работами здесь

Отображение координат на карте
Добрый день. Вопрос такой есть программа в которой формируется быза по объектам и один из столбец...

Отображение gps на карте
Необходимо написать программу которая будет отображать на карте местоположение объектов которое...

Отображение пинов на карте
Вообщем такая проблема, запускаю на симуляторе карты пины и все что нужно отображается на карте,...

Отображение данных на карте
Доброго времени суток. Ведется база (А2007) по объектах. Есть поля с координатами (долгота,...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru