01.03.2011, 12:16
|
Новичок на форуме
|
|
Регистрация: 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.
|
|
01.03.2011, 12:38
|
Профессор
|
|
Регистрация: 07.11.2010
Сообщений: 301
|
|
Строки не объекты, их следует пропустить через JSON.parse перед использованием.
|
|
01.03.2011, 12:49
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,587
|
|
Ваша ошибка в то что вы нифига не понимаете что делаете.
Но даже нифига не зная можно тупо сравнить.
Надо так:
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 - массив, содержащий объекты, во втором - массив, содержащий массив, содержащий, в свою очередь, строки.
|
|
01.03.2011, 15:42
|
Новичок на форуме
|
|
Регистрация: 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) + '}'); ?
Заранее спасибо.
|
|
01.03.2011, 18:46
|
Новичок на форуме
|
|
Регистрация: 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], …
В принципе должно уже рисоваться, а не хочет (((
Подскажите … где еще неправильно ???
|
|
01.03.2011, 19:00
|
|
Тлен
|
|
Регистрация: 02.01.2010
Сообщений: 6,587
|
|
Форматируйте код.
[JS] [/JS]
[HTML] [/HTML]
Возможно вам сразу станет понятно.
В любом случае в не форматированном разбираться лень.
|
|
01.03.2011, 19:39
|
Новичок на форуме
|
|
Регистрация: 01.03.2011
Сообщений: 5
|
|
Убрал лишний массив poly, оставил тот который объявляется выше этих функций polly1.
Теперь рисует полигон согласно внесенным координатам (улицы или просто адресам(индексам)) в массив.
Всем спасибо… тема закрыта. )
P.S (Отдельное спасибо Aetae)
Последний раз редактировалось ed_17, 01.03.2011 в 19:42.
|
|
|
|