Клуб API Карт

Как правильно применить getRoute и getViaPoint чтобы пронумеровать транзитные точки маршрута

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

Поднимаю эту тему уже не в первый раз, перебробовал уже кучу вариантов, выкладываю весь текст и конкретный участок кода в котором проблема:

 

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head>
        <title>. .</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <script type="text/javascript">
            var map, geoResult;
   
            YMaps.jQuery(function () {
   
            map = new YMaps.Map(YMaps.jQuery("#YMapsID")[0]);
   
         map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 12);
         map.addControl(new YMaps.ToolBar());
         map.addControl(new YMaps.Zoom());
         map.addControl(new YMaps.MiniMap());
         map.addControl(new YMaps.ScaleLine());
         map.addControl(new YMaps.SearchControl());
   
var router = new YMaps.Router(
        ['Москва, ул.Самокатная, д.1, стр.21 ', 'Кленовый бульвар, 13', 'Пресненская набережная, 10', new YMaps.GeoPoint(37.583032, 55.745873), 'Москва, ул. Станиславского, д.21'], [1],
        { viewAutoApply: true } ); 
///
    /////////////Новый способ от модератора в котором проблема/////////////   
                                                                                                                                               
     YMaps.Events.observe(router, router.Events.Success, function() { 
    //// 
     for (var i = 0, l = router.getNumRoutes(), route; i < l; i++) { 
     route = router.getRoute(i);        
         for (var j = 0, vl = route.getNumViaPoints(), viaPoint; j < vl; j++) {
             viaPoint = route.getViaPoint(j); 
    // 
 var pm = new YMaps.Placemark(route.getPoint(viaPoint.getPolylineIndex()));
    pm.setIconContent(j.toString());
    map.addOverlay(pm);
     }
        }
            }); 
    /////////////Новый способ от модератора в котором проблема//////////////
});
         </script> 
         </head> 
   
         <body> 
         <div id="YMapsID" style="width:1200px;height:720px"></div> 
         </body> 
         </html>

 

 

Судя по результату получилось так , что создался один пустой "Placemark"

   Видимо здесь в него не передались значения "viaPoint" 

      var pm = new YMaps.Placemark(route.getPoint(viaPoint.getPolylineIndex()));

 

ПОМОГИЕ ПОЖАЛУЙСТА...

 

 

8 комментариев

 

Судя по результату получилось так , что создался один пустой "Placemark"

   Видимо здесь в него не передались значения "viaPoint" : 

      var pm = new YMaps.Placemark(route.getPoint(viaPoint.getPolylineIndex()));

 

ПОМОГИЕ ПОЖАЛУЙСТА...

 

А что должно было создаться?

Значения передались тк он стоит именно на вашей транзитной точке (кленовый бульвар)

Мне нужно чтобы строился маршрут и у каждой тр-й точки ставился её индекс, (маршрут я построил, а точки просто балунами без индексов появляются) 

 

var router = new YMaps.Router(        ['Москва, ул.Самокатная, д.1, стр.21 ', 'Кленовый бульвар, 13', 'Пресненская набережная, 10', new YMaps.GeoPoint(37.583032, 55.745873), 'Москва, ул. Станиславского, д.21'], [1],        { viewAutoApply: true }  ); ///map.addOverlay(router); 

 

 

Мне нужно чтобы строился маршрут и у каждой тр-й точки ставился её индекс, (маршрут я построил, а точки просто балунами без индексов появляются) 

 

 

по тому куску кода что вы запостили

маршрут не рисуется а только ставится точка по адресу Кленовый бульвар, 13 (чтобы увидеть карту надо отзумить)

с индексом "0" в иконке (те как вы и хотите)

 

    pm.setIconContent(j.toString());

 

и балун у нее пустой но НЕ открыт

 

Код работает правильно.

Я вижу это как-то в двух вариантах (какой верный):

 

1) я получил первый элемент (0), мне нужно получить оставшиеся - а затем все отзумить, тогда возникает 2 вопроса:

- как получить через "pm.setIconContent(j.toString());" оставшиеся элементы?

 - как отзумить (какой это метод)? 

 

2) можно сразу без метода "pm.setIconContent(j.toString());" отзумить все элементы:

- как отзумить все элементы сразу (какой это метод)? 

 

 

1) я получил первый элемент (0), мне нужно получить оставшиеся - а затем все отзумить, тогда возникает 2 вопроса:

 

какие остальные? у вас только одна транзитная точка

 

отзумить значит уменьшить масштаб

ваш плэйсмарк с индексом "0" там стоит 

из текста мало что понятно... что значит отзумить?  

как мне подправить код, Используя "router","route", "viaPoint", чтобы получить маршрут с пронумерованными точками?

 

 Вы установили зум в 12

 

map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 12);

 

А нужно установить по размерам маршрута, чтобы он весь помещался на карте

потому что сейчас точка с индексом не видна, она не влезла на карту 

чтобы ее увидеть нужно нажать на "минус" и уменьшить зум

 

Зачем Вам viaPoint в этой задаче?

 

Sergey Konstantinov
28 января 2016, 06:16

Заведите общий счетчик

var counter = 1;

И при создании точки задавайте контент:

 var pm = new YMaps.Placemark(route.getPoint(viaPoint.getPolylineIndex()));

pm.setIconContent('#' + (counter++));