Клуб API Карт

Помогите решить проблему.

Я
31 мая 2013, 22:00

Здравствуйте! У меня следующий код: я задаю точку в переменной punktB, вычисляю координаты этой точки, потом нахожу близжайшее метро к этой точке, нахожу его координаты, строю маршрут. Вопрос: как сделать так, чтобы, если не возможно проложить маршрут, то сделать переход, скажем на пустую страницу? 

 

<!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=windows-1251"/>

     <script src="http://api-maps.yandex.ru/2.0/?load=package.full&lang=ru-RU"

             type="text/javascript"></script>

     <script src="http://yandex.st/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>

     <script type="text/javascript">

ymaps.ready(init);

        function init () {

            var punktB ='<заполняется извне>';

            ymaps.geocode( punktB , { results: 1 }).then(function (res) {

                 var secondGeoObject = res.geoObjects.get(0);

                 var scoord = secondGeoObject.geometry.getCoordinates();

                 window.myMap = new ymaps.Map("map", {center: scoord, zoom: 11} );

 

            ymaps.geocode(myMap.getCenter(), {kind: 'metro', boundedBy: myMap.getBounds(), results: 1}).then(function (res) {

                 var cGeoObject = res.geoObjects.get(0);

                 var ccoord = cGeoObject.geometry.getCoordinates();

 var names = [];

                 res.geoObjects.each(function (obj) { names.push(obj.properties.get('name'));

}, function (error) {alert('Возникла ошибка: 2' + error.message);});

 

            ymaps.route([ccoord,scoord], {mapStateAutoApply:true}).then(function (route) {

                 window.myMap.geoObjects.add(route);

 var way = route.getPaths().get(0),

       segments = way.getSegments();

                 var points = route.getWayPoints();

                 points.options.set('preset', 'twirl#greenStretchyIcon');

                 points.get(0).properties.set('iconContent', names[0]);

                 points.get(1).properties.set('iconContent', punktB);

            }, function (error) {alert('Возникла ошибка: route :' + error.message);});

            }, function (error) {alert('Возникла ошибка: center :' + error.message);});

         }, function (error) {alert('Возникла ошибка: f' + error.message);});

};

     </script>

</head>

<body bgcolor="black" id="list" >

<div id="map" style="width:625px; height:425px"></div>

</body>

</html>

 

  

4 комментария
Подписаться на комментарии к посту

в обработчик ошибки постройки маршрута поставте window.location="url"

 

Простите, неудержался, но когда я вижу такую вложенность:

 

            }, function (error) {alert('Возникла ошибка: route :' + error.message);});

            }, function (error) {alert('Возникла ошибка: center :' + error.message);});

         }, function (error) {alert('Возникла ошибка: f' + error.message);});

Игла в яйце, яйцо в утке, утка в зайце...

Я сразу вспоминаю "здравствуйте. делаю социальную сеть"

Вы как сами то, если через недельку откроете этот код, поймете что в нем происходит?

 

По сути вопроса, у Вас есть второй аргумент в then, на случай возникновения ошибок, делайте переход в нем

НУ извините за столь не красивый код. Первая поделка моя. Я почему задал вопрос, потому что при возникноении ошибки, не выводится сообщени об этом

}, function (error) {alert('Возникла ошибка: route :' + error.message);});

            }, function (error) {alert('Возникла ошибка: center :' + error.message);});

         }, function (error) {alert('Возникла ошибка: f' + error.message);});

Я эксперементировал, специально создавал ошибочные ситуации, и ничего не происходило, либо карта не отображается, либо отображается океан или какие-нибудь джунгли) А так спасибо за подсказку, попробую сделать.

если не отображается карта, возможно у Вас ошибки javascript (проверьте консоль броузера) Если океан и джунгли - 2 варианта, либо геокодер нашел не то, либо порядок координат перепутан