Имя: Пароль:
1C
1С v8
Yandex API. Расстояние между двумя объектами
0 Cmyk32
 
20.03.12
16:23
Всем привет!
Есть задача считать расстояние между двумя объектами.

Следующий код частично рабочий:
YMaps.jQuery(function () {
           
           
// Создание экземпляра карты и его привязка к созданному контейнеру
var map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
               
               
// Установка для карты ее центра и масштаба
map.setCenter(new YMaps.GeoPoint(37.62, 55.74), 12);

});
           
function getDistanceFor2Point (Point1, Point2) {
               
var router = new YMaps.Router(
[Point1, Point2],[],
{ viewAutoApply: true }
);
                             
summaryDistance = 0;
             
YMaps.Events.observe(router, router.Events.Success, function F() {
var route = router.getRoute(0);
var action = [];
             
for (var i=0; i  < route.getNumRouteSegments(); i++) {
var segment = route.getRouteSegment(i);
summaryDistance = summaryDistance + segment.getDistance();
}
   return summaryDistance;                
});

}

Частично рабочий, потому что расстояние считается внутри функции F() и не передается во внешнюю функцию.
1 Cmyk32
 
20.03.12
16:24
Кто-нибудь умеет возвращать значение из функции обработчика Observer?
2 Адинэснег
 
20.03.12
16:25
точно v8?
3 Cmyk32
 
20.03.12
16:26
упс)) конечно не точно)
4 Cmyk32
 
20.03.12
16:26
Но зато надо реализовать внутри 1С 8))
5 lxs
 
20.03.12
16:32
api с яндекса пилил?
6 Cmyk32
 
20.03.12
16:32
Откуда же еще. ПилилА, но не суть.
7 lxs
 
20.03.12
16:33
в какой раздел тему запихнуть?
8 СноваЗдорова
 
20.03.12
16:34
(6) Тогда фотку
9 lxs
 
20.03.12
16:34
Вечером смогу скинуть код. Я реализовывал подобную задачу, правда на управляемых формах.
10 СноваЗдорова
 
20.03.12
16:34
(8) поторопился
11 Cmyk32
 
20.03.12
16:37
(7) Да все равно. В IT может? Скинь, плиз, код. Для любых форм буду рада)
12 Cmyk32
 
21.03.12
00:18
Меня кинули(
13 Пип Пибип
 
21.03.12
01:06
Попробу
14 Пип Пибип
 
21.03.12
01:07
то есть, попробуй вот здесь посмотреть:
http://forum.infostart.ru/forum24/topic41112/message513191/#message513191
может, чего и найдешь себе
15 pumbaEO
 
21.03.12
01:53
(14) думал что-то интересное, а там мой же быдлокод.
16 Злопчинский
 
21.03.12
02:32
а притянуть сферическую геометрию - слабо?
17 Cmyk32
 
21.03.12
11:04
(16) вауууууу!!!!! какие слова знаете! Прям на от трехсоттыщ тяните)))
18 Cmyk32
 
21.03.12
11:52
lxs, появись-появись
19 Cmyk32
 
21.03.12
12:58
Сделала, как смогла. Благодарности pumbaEO и Пип Пибип за идею и ссылку. Если кого заинтересует:

           
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
   <title>Summury distance. Transport</title>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <script src="http://api-maps.yandex.ru/1.1/index.xml?key=ANpUFEkBAAAAf7jmJwMAHGZHrcKNDsbEqEVjEUtCmufxQMwAAAAAAAAAAAAvVrubVT4btztbduoIgTLAeFILaQ==" type="text/javascript"></script>
   <script type="text/javascript">

           
           function getDistanceFor2Point(Point1, Point2) {
                                 
               var router = new YMaps.Router([Point1, Point2]);
               
               YMaps.Events.observe(router, router.Events.GeocodeError, function (link, number) {
                 alert('Ошибка при геокодировании точки № ' + number);
               })

               YMaps.Events.observe(router, router.Events.RouteError, function (link, number) {
                 alert('Не удается проложить маршрут до точки № ' + number);
               });
               
               //Add
               YMaps.Events.observe(router, router.Events.Success, function() {
               summuryDistance = router.getDistance();    
               
               var x = document.getElementById('finallyTab').insertRow(0)
               var p1_cell=x.insertCell(0);
                 var p2_cell=x.insertCell(1);
               var d_cell=x.insertCell(2);
               
               //Fill
                 p1_cell.innerHTML=Point1;
               p2_cell.innerHTML=Point2;
               d_cell.innerHTML=summuryDistance;

               //alert(summuryDistance);    
              });
             
           }
   </script>
</head>

<body onLoad="javascript:getDistanceFor2Point('Арбатская','Кропоткинская')">
<table id="finallyTab" width="488" border="1">
 <tr>
   <td width="165"></td>
   <td width="214"></td>
   <td width="87"></td>
 </tr>
</table>
 
</body>

</html>

Через 1С передавать onLoad="javascript:getDistanceFor2Point('Арбатская','Кропоткинская')
20 Пип Пибип
 
21.03.12
23:52
(15) убил))