Клуб API Карт

Различные ошибки route

Пост в архиве.
Глазырев Константин
4 декабря 2012, 00:13

Чем  больше встраиваю API в сайт, тем больше понимаю что нельзя полностью полагаться на API.

Выявил две проблемы и все с построением маршрута.

1) При указании улицы Бирюлёвская, маршрут строится до станции "Орехово", хотя удобнее и ближе добираться до "Царицыно". Карты не учитывают переезд под Повелецкой линией.

2) Не всегда определяем или строит маршрут до метро. В данный момент встраиваю карту в сайт недвижимости и натыкаюсь чисто случайно на проблему такого характера.

Пользователь добавляет объект(к API не относится) и обращается к карте, нанося точку, на карту, определяя ближайшее метро, но маршрут строить не хочет как и определить растояние до метро.

Например, "Молодогвардейская улица, 18к2" до метро "Кунцевская", метро находит, маршрут не строит. Видимо по тому, что объект не находится рядом с дорогой.   

 

Может я не так что-то делаю:

 

Скинул свой кривой код

 

var myMap, routeLength, firtstPathTime, firstPathFirstSegmentJamsTime, name_metro;

// ymaps.ready(inits);
ymaps.ready(init);
function init() {
yandex_set_map('Россия, ' + $('#adress_name').val(), 9);
}

/* Строительство карты */
function yandex_set_map(city, zoom_maps, metro) {
// myMap.panTo(
var newmaps = new ymaps.geocode(city);

newmaps.then(function(res) {
// определяем координаты
var myCoords = res.geoObjects.get(0).geometry.getCoordinates();

// Добавляем координаты в шаблон

$('#yandex_point').val(myCoords);

// создаём карту
myMap = new ymaps.Map("map_add", {
center : myCoords,
zoom : zoom_maps
});

// if(metro == true){
// messeng(myCoords);
// http://api.yandex.ru/maps/doc/geocoder/desc/reference/kind.xml
var myGeocoder_metro = ymaps.geocode(myCoords, {
kind : 'metro',
results : 1
});
// }
var myGeocoder_home = ymaps.geocode(myCoords, {
kind : 'house',
results : 1
});

myGeocoder_home.then(function(res_house) {
var nearest_house = res_house.geoObjects.get(0);

// var name = nearest.properties.get('name');
nearest_house.properties.set('iconContent', 'Ближайшее метро');
nearest_house.options.set('preset', 'twirl#redStretchyIcon');
myMap.geoObjects.add(res.geoObjects);
}, function(err) {
// alert('Ошибка');
});
// if(metro == true){
myGeocoder_metro.then(function(res) {
var nearest = res.geoObjects.get(0);

var name_metro = nearest.properties.get('name');
nearest.properties.set('iconContent', name_metro);
nearest.options.set('preset', 'twirl#redStretchyIcon');
myMap.geoObjects.add(res.geoObjects);

$('#metro_yandex_name').val(name_metro);
/* Название метро */

/* messeng(name_metro); */
ymaps.route([city, name_metro]).then(function(route) {

messeng(name_metro);

// маршрут
myMap.geoObjects.add(route);
routeLength = route.getLength();
/* длину маршрута в метрах. */
firtstPathTime = route.getTime();
/* Возвращает время проезда маршрута в секундах. */
firstPathFirstSegmentJamsTime = route.getJamsTime();
/* Возвращает время проезда маршрута в секундах с учетом пробок. */

// $('#metro_yandex_name').val(name_metro);/* Название метро */
$('#metro_yandex_distance').val(routeLength);
$('#metro_yandex_routegettime').val(firtstPathTime);
$('#metro_yandex_routegettimejams').val(firstPathFirstSegmentJamsTime);

// messeng(routeLength +'Длина');
// messeng(firtstPathTime +'Время без учета пробок ');
// messeng(firstPathFirstSegmentJamsTime +'Время с пробками ');
/* Возвращает время проезда маршрута в секундах. */
// 934.59Время с пробками
}, function(error) {
// alert('Возникла ошибка: ' + error.message);
});
}, function(err) {
// alert('Ошибка');
});
// }
myMap.controls.add('zoomControl', {
top : 5,
left : 5
});

/*
Baloon = new ymaps.Placemark(myCoords,
{// Опции
preset : 'twirl#redStretchyIcon' ,
iconContent : 'Ближайшее метро'
});
// Добавляем метку на карту

myMap.geoObjects.add(Baloon);
*/

});
}

function yandex_reload_map(city, zoom_maps, metro) {

/* удаляем карту */
myMap.destroy();
/* обнуляем метро */
routeLength = 0, name_metro = 0, firtstPathTime = 0, firstPathFirstSegmentJamsTime = 0;
yandex_set_map(city, zoom_maps, metro)
}