Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.03.2011, 12:16
Новичок на форуме
Отправить личное сообщение для ed_17 Посмотреть профиль Найти все сообщения от ed_17
 
Регистрация: 01.03.2011
Сообщений: 5

Подскажите где я допускаю ошибку?
Подскажите, пожалуйста, у меня есть функция которая рисует на карте треугольник по 3 координатам:

function vlayer() {
var area5 = new VArea();
area5 = {coords: [{ lng: 27.68555, lat: 51.53609 }, { lng: 32.49756, lat: 50.65294 }, { lng: 28.41064, lat: 49.23912 }],type: "area",
color: "#ff0000", opacity:0.4}

map.add(area5);
map.repaint();

Но когда я пытаюсь взять координаты из уже заранее созданного массива, у меня треугольник не появляется:
function vlayer() {

var area5 = new VArea();
var data = ["{lng: 27.68555, lat: 51.53609}", "{lng: 32.49756, lat: 50.65294}", "{lng: 28.41064, lat: 49.23912}"];
area5 = { coords: [data],type: "area", color: "#ff0000", opacity: 0.4}

map.add(area5);
map.repaint();
}
Подскажите где я допускаю ошибку? Спасибо

Последний раз редактировалось ed_17, 01.03.2011 в 12:23.
Ответить с цитированием
  #2 (permalink)  
Старый 01.03.2011, 12:38
Профессор
Отправить личное сообщение для SV0L0CH Посмотреть профиль Найти все сообщения от SV0L0CH
 
Регистрация: 07.11.2010
Сообщений: 301

Строки не объекты, их следует пропустить через JSON.parse перед использованием.
Ответить с цитированием
  #3 (permalink)  
Старый 01.03.2011, 12:49
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Ваша ошибка в то что вы нифига не понимаете что делаете.
Но даже нифига не зная можно тупо сравнить.

Надо так:
area5 = {coords: [{ lng: 27.68555, lat: 51.53609 }, { lng: 32.49756, lat: 50.65294 }, { lng: 28.41064, lat: 49.23912 }],type: "area",
color: "#ff0000", opacity:0.4}


Вы делаете так:
var data = ["{lng: 27.68555, lat: 51.53609}", "{lng: 32.49756, lat: 50.65294}", "{lng: 28.41064, lat: 49.23912}"];
area5 = { coords: [data],type: "area", color: "#ff0000", opacity: 0.4}
Что равносильно:
area5 = { coords: [["{lng: 27.68555, lat: 51.53609}", "{lng: 32.49756, lat: 50.65294}", "{lng: 28.41064, lat: 49.23912}"]],type: "area", color: "#ff0000", opacity: 0.4}


Теперь сравним:
[{ lng: 27.68555, lat: 51.53609 }, { lng: 32.49756, lat: 50.65294 }, { lng: 28.41064, lat: 49.23912 }]
[["{lng: 27.68555, lat: 51.53609}", "{lng: 32.49756, lat: 50.65294}", "{lng: 28.41064, lat: 49.23912}"]]

В первом случае coords - массив, содержащий объекты, во втором - массив, содержащий массив, содержащий, в свою очередь, строки.
Ответить с цитированием
  #4 (permalink)  
Старый 01.03.2011, 15:42
Новичок на форуме
Отправить личное сообщение для ed_17 Посмотреть профиль Найти все сообщения от ed_17
 
Регистрация: 01.03.2011
Сообщений: 5

Спасибо, что разъяснили.
Написал так:
var data =[{lng: 27.68555, lat: 51.53609}, {lng: 32.49756, lat: 50.65294}, {lng: 28.41064, lat: 49.23912}];
area5 = {coords: data,type: "area", color: "#ff0000", opacity: 0.4}

Все работает.

Подскажите, а если я массив polly пополняю в функции:
var polly1 = new Array();
function show_points_address() {
var poly = new Array();
var point = { lng: 30.5112, lat: 50.4550 };
map.center(point, 13);

VRemoteCall.request("address", form1.Text4.value + "9999", function callback(layer) {
for (var p = 0; p < layer.childs().length; p++) {

var obj = layer.childs(p);
poly.push( '{ lng:' + obj.bounds().center().lng.toPrecision(7) + ', lat:' + obj.bounds().center().lat.toPrecision(7) + '}');
}
polly1.push(poly);
}

);
}

У меня выходит массив polly1 в котором есть значения { lng:30.48206, lat:50.43444},{ lng:30.48873, lat:50.43675},{ lng:30.48989, lat:50.43683}, . . .
Этот массив я использую в функции show_gps() но полигон не рисуется.


function show_gps() {
var area4 = new VArea();
area4 = { coords: polly1, type: "area", color: "#ff0000", opacity: 0.4 }
map.add(area4);
alert(polly1);
map.repaint();
}

Подскажите пожалуйста, не работает потому что я один массив пишу в другой? (polly -- > polly1)
Или потому что тут ошибка poly.push( '{ lng:' + obj.bounds().center().lng.toPrecision(7) + ', lat:' + obj.bounds().center().lat.toPrecision(7) + '}'); ?

Заранее спасибо.
Ответить с цитированием
  #5 (permalink)  
Старый 01.03.2011, 18:46
Новичок на форуме
Отправить личное сообщение для ed_17 Посмотреть профиль Найти все сообщения от ed_17
 
Регистрация: 01.03.2011
Сообщений: 5

Изменил строку poly.push({ lng: obj.bounds().center().lng.toPrecision(7) , lat: obj.bounds().center().lat.toPrecision(7) });
Если теперь посмотреть в alert то выдает уже [object Object],[object Object],[object Object], …
В принципе должно уже рисоваться, а не хочет (((

Подскажите … где еще неправильно ???
Ответить с цитированием
  #6 (permalink)  
Старый 01.03.2011, 19:00
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,491

Форматируйте код.
[JS] [/JS]
[HTML] [/HTML]
Возможно вам сразу станет понятно.
В любом случае в не форматированном разбираться лень.
Ответить с цитированием
  #7 (permalink)  
Старый 01.03.2011, 19:39
Новичок на форуме
Отправить личное сообщение для ed_17 Посмотреть профиль Найти все сообщения от ed_17
 
Регистрация: 01.03.2011
Сообщений: 5

Убрал лишний массив poly, оставил тот который объявляется выше этих функций polly1.
Теперь рисует полигон согласно внесенным координатам (улицы или просто адресам(индексам)) в массив.

Всем спасибо… тема закрыта. )

P.S (Отдельное спасибо Aetae)

Последний раз редактировалось ed_17, 01.03.2011 в 19:42.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите плизз с выбором селектора для select option frolvict jQuery 2 13.11.2010 15:29
Написал часики для обратного отсчета. Подскажите где слажал t0xas Общие вопросы Javascript 14 26.09.2010 18:22
Подскажите где найти нужный материал. Yoksven Общие вопросы Javascript 7 18.06.2010 02:48
Подскажите где найти tinyMCE udavka25 Общие вопросы Javascript 1 12.12.2008 19:36
Помогите или подскажите где искать. designovermatter Общие вопросы Javascript 2 09.10.2008 18:12