Клуб API Карт

передать параметры маршрутизатору

twixbounty
5 декабря 2010, 19:06

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

есть router

var router = new YMaps.Router([new YMaps.GeoPoint(37.125073,56.739835), new YMaps.GeoPoint(37.225073,56.739835)],[], { viewAutoApply: true });

map.addOverlay(router);

нужно чтобы параметры начала и конца пути передавались щелчком левой кнопкой мыши и правой.... подскажите как это сделать

7 комментариев
Подписаться на комментарии к посту
делается только ручками, и никак иначе.
Надо подвеситься на карту в событиях onclick, и при клике создавать(для наглядности) маркер.
При установки второго маркера - запускать роутер на данных этих двух точек.
Все.
я это понимаю, в том то и дело что не работает



 var myGeoPointOne;
 var myGeoPointOne;

 
 YMaps.Events.observe(map, map.Events.ContextMenu, function (map, mEvent) {
        var placemark = new YMaps.Placemark(mEvent.getGeoPoint());
        myGeoPointOne=new YMaps.Placemark(mEvent.getGeoPoint());
        map.addOverlay(placemark);
        myEventListener.cleanup();
    }, this);


YMaps.Events.observe(map, map.Events.Click, function (map, mEvent) {
        var placemark = new YMaps.Placemark(mEvent.getGeoPoint());
        myGeoPointTwo=new YMaps.Placemark(mEvent.getGeoPoint());
        map.addOverlay(placemark);
        myEventListener.cleanup();
    }, this);
   
    var router = new YMaps.Router([myGeoPointOne,myGeoPointTwo]);


YMaps.Events.observe(router, router.Events.Success, function() {
router.getWayPoint(0).setIconContent('Точка отправления');
router.getWayPoint(1).setIconContent('Точка прибытия');
      map.addOverlay(router);
});

я попробовал вот так не работает, что то на этом мои идеи закончились
а почему вы думаете что роутер получит на вход заданые вами точки.
Ну в смысле что он запуститься когда вы установите вторую точку..
чета я там(в myGeoPointTwo) нужных действий( да еще бы и в нужный момент) не вижу :)
можно как нибудь поподробнее

я же говорю я буквально вчера начал читать про api карт
специально не написал точное решение в прошлый раз, и сейчас не нарисую.
Давайте еще раз.
Вы устанавливаете ивенты на клик на карте левой и правой кнопкой.
Левая создает вторую точку, правая - первую.
Заодно создает маркеры для внятности, которые, правдо, при создании новой первой или второй кнопки не подтирает за собой..

В общем вешаем ивенты которые только что-то рендерят.
После чего запускаем роутинг. Только вот клика на карте нету еще.

Где ошибка? Не в АПИ карт, а в логике.


var myGeoPointOne=0;
 var myGeoPointOne=0;
var reroute=0;

 
 YMaps.Events.observe(map, map.Events.ContextMenu, function (map, mEvent) {
        var placemark = new YMaps.Placemark(mEvent.getGeoPoint());
        myGeoPointOne=new YMaps.Placemark(mEvent.getGeoPoint());
        map.addOverlay(placemark);
        myEventListener.cleanup();
       reroute();//!!
    }, this);


YMaps.Events.observe(map, map.Events.Click, function (map, mEvent) {
        var placemark = new YMaps.Placemark(mEvent.getGeoPoint());
        myGeoPointTwo=new YMaps.Placemark(mEvent.getGeoPoint());
        map.addOverlay(placemark);
        myEventListener.cleanup();
       reroute();//
    }, this);
   
    var router = 0;
 reroute=function(){
if(!myGeoPointTwo || !myGeoPointOne){
 return;
}
if(router){
 router.removeOverlay();//remove old router from a map
}
 router=new YMaps.Router([myGeoPointOne,myGeoPointTwo]);


YMaps.Events.observe(router, router.Events.Success, function() {
router.getWayPoint(0).setIconContent('Точка отправления');
router.getWayPoint(1).setIconContent('Точка прибытия');
      map.addOverlay(router);
});
}

Ну - отдаленно вот так
то есть надо отрисовку пути запихнуть в обработчик какого-нибудь события, который происходит после кликов?