 
			
				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,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Ваша ошибка в то что вы нифига не понимаете что делаете. 
Но даже нифига не зная можно тупо сравнить.
 
Надо так:
 
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,601
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Форматируйте код.  
[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.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |