Клуб API Карт

По какой точке трека кликнули?

Пост в архиве.
Fabel.A
30 марта 2013, 18:11

Трек загружен на карту из GPX. Как определить, по какой именно точке трека был произведен клик? Где-то в недрах API это происходит - baloon показывает время точки, по которой кликнули. А как мне получить это время (и др. св-ва точки) в своем обработчике клика ?

 ymaps.geoXml.load( 'http://myhost.ru/FILE.GPX' ).then( function(res) {

        res.geoObjects.events.add( 'click', function( e ) {

            var object = e.get('target'); // target соотвествует тегу "trkseg" из GPX-файла, т.е. множеству точек трека, а не одной

            console.log( object.properties.get('metaDataProperty').gpxPoints ); // вот все точки трека, но на них не повесить обработчик клика, это просто данные

        } );

        myMap.geoObjects.add( res.geoObjects );

 

3 комментария

Я бы попробовал так:

1) Определяем координаты клика

2) Спрашиваем у полилинии ближайшую к этой координате точку

Да, я был прав.

Внутри обработчика клика делаем так: 

var position = e.get('coordPosition'),      polyline = e.get('target'),      data = polyline.properties.get('metaDataProperty.gpxPoints'),      index = polyline.geometry.getClosest(position).closestPointIndex;

 

console.log(data[index]);

Спасибо, работает! С этого бока не додумался зайти.