Клуб API Карт

Множество объектов из файла и центрирование на объект с определенным №

Пост в архиве.

Добрый вечер.

Естькарта с загруженными объектами из CSV, кластеризатором и своими пресетами, данные беруться в таком виде

 

$.ajax({
url:'http://aps-engineering.ru/wp-content/uploads/YMaps/markers.csv',
success: function(data){
var rows = data.split("\n");
var src_res='';
for(var i in rows){
var colls=rows[i].split(";");//или другой символ разделитель

 

у каждого объекта есть такой набор переменных  

myPlacemark = new ymaps.Placemark([colls[5], colls[4]], {
// Свойства метки и балуна
iden: colls[0],
hintContent:colls[1],
balloonContentHeader: '<div style="color:#7a100b;">'+colls[1]+'</div>',
balloonContentBody: '<div style="font-size:12px;"><strong>Адрес:</strong> '+colls[2]+'<br /><strong>Площадь объекта:</strong> '+colls[3]+' м. кв.</div>',
balloonContentFooter:'<a href="'+colls[6]+'">Страница объекта<a>',
preset: 'my#icon'

т.е. есть некий идентефикатор с номером iden.

Нужно, чтоб при открытии карты открывался балун метки с iden=10 (условность, в каждом конкретном случае № разный), центрировал карту на него, и выставлял зум =13


 Тут  курил, курил, так ничего и не понял .... Какой командой это можно реализовать?

 

12 комментариев
Владислав Турман
28 января 2016, 00:01

setCenter(center[, zoom[, options]])

а как выловить именно точку с определенным iden ????

Владислав Турман
28 января 2016, 00:01

Попробуйте так:

 

- У вас уже есть цикл по точкам, осталось только в нем добавить проверку.

- После добавления нужной метки на карту можно открыть ее балун.

 

Извините, но за вас писать код лень, тут нет ничего сложного. Желательно вначале прочитать книгу по основам JavaScript.

Вот такой код написал ... не срабатывает .... пока без балуна хочу

 

if (iden==1) {myMap.setCenter([colls[5], colls[4]], 15, {

checkZoomRange: false

});

}

 

где ошибка закралась?

Владислав Турман
28 января 2016, 00:01

 colls[0] == 1

а не iden, и вообще, общепринято делать уникальную нумерацию не iden а id или Id

Огромное спасибо! 

Все заработало :)

Возникла новая задача, и снова на трабл напоролся.... 

Часть метки попадает под кнопку, выглядит не эстетично.  Хочу сделать чтоб карта смещалась несколько вниз. Пробую в песочнице команду 

 

{myMap.setCenter( [55.76+0.1, 37.64], 10, {checkZoomRange: true});}

все работате как надо при статических цифрах как только у себя на сайте пробую вставить конструкцию 

 

if (colls[0]==1) {myMap.setCenter([colls[5]+0.09, colls[4]], 13, {checkZoomRange: false }

То карта падает, и ничего не работает. Я уже пробовал назначать переменную вида 

 

var x=colls[5]+0.09

и подставлять этот х в конструкцию выше, результат одинкаов, карта лежит....  

с переменными нельзя такой фокус делать?

 

 

 

 

 

 

 

Владислав Турман
28 января 2016, 00:01

в вашем коде не закрыты скобки. Лучше дайте ссылку на карту, где можно посмотреть весь ваш код.

весь код тут http://aps-engineering.ru/22-2

скобки закрыты :) плохо скопипастил :)

Во так на самом деле выглядит 

if (colls[0]==1) {myMap.setCenter([colls[5]+0.09, colls[4]], 13, {checkZoomRange: true});}

 

только сейчас +0.09 убрал, чтоб карта функционировала

 

 

 

Владислав Турман
28 января 2016, 00:01

У вас все переменные массива получается строками.

Я думаю, вам их надо переводить теперь в int и float. (ну 0, 5 и 4 элементы массива, точно)

ничего не понял, можно поподробней, во что переводить данные массива? и зачем? он же подставляет туда конкретные значения из таблиц ???

 

Владислав Турман
28 января 2016, 00:01

http://msdn.microsoft.com/ru-ru/library/7wkd9z69(v=vs.94).aspx

или сами найдите информацию о типах данных в JavaScript

 

Повторю, вам надо привести ваши string к типу int (для id) и к типу float (для обоих координат).

 

Для примера, ваш код: "0.5" + 0.1 = "0.50.1" // это не координата