Клуб API Карт

Рассчитать расстояние между двумя парами координат

alexmak43.malinin
6 октября 2016, 09:20

Пытаюсь сделать простой пример

ymaps.route([59.94, 30.31],[59.956084, 30.356849]);
    
    var routeLength = route.getLength();
    
    alert (routeLength);

И не выдает ошибку и не работает. Подскажите, что не так.

13 комментариев
Подписаться на комментарии к посту
Дмитрий Фаринный
6 октября 2016, 13:29
ymaps.route(
[
  откуда,
  куда
],
{mapStateAutoApply: false}
).done(function (router) {
 console.log(route.getHumanLength()); // длинна маршрута
 console.log(route.getHumanTime()); // сколько примерно повремени
}
alexmal1943.malinin
6 октября 2016, 14:45
Дмитрий Фаринный,
Спастбо, но у меня ничего не получилось. Может я неправильно задаю "откуда" и "куда".
 ymaps.route(
[55.539498,37.766213,
55.800069,38.204116],
{mapStateAutoApply: false}
).done(function (router) {
console.log(route.getHumanLength()); // длинна маршрута
console.log(route.getHumanTime()); // сколько примерно повремени
}
Дмитрий Фаринный
6 октября 2016, 14:57
alexmal1943.malinin,
полностью от инициализации карты код
alexmal1943.malinin
6 октября 2016, 15:34
Дмитрий Фаринный,
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Пример. Рассчет расстояния между двумя точками.</title>
<!--
Подключаем API карт
Если вы используете API локально, то в URL ресурса необходимо указывать протокол в стандартном виде (http://...)

<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
<script src="routes_to_point.js" type="text/javascript"></script>-->

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://yandex.st/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
<script src="https://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU" type="text/javascript"></script>

<style>
body, html {
padding: 0;
margin: 0;
width: 100%;
height: 100%;
}
#map {
width: 100%;
height: 100%;
}
</style>
</head>

<script type="text/javascript"> // Старт вставки

alert("start");
ymaps.route(
[[55.539498,37.766213],
[55.800069,38.204116]],
{mapStateAutoApply: false}
).done(function (router) {
console.log(route.getHumanLength()); // длинна маршрута
console.log(route.getHumanTime()); // сколько примерно повремени
}


alert("st");
// alert (routeLength);*/

//Конец вставки. Весь JS код вставляется между открытием скрипта и его закрытием
</script>
<body>
<div id="map" style="width: 600px; height: 400px"></div>
</body>
</html>
Дмитрий Фаринный
6 октября 2016, 15:45
alexmal1943.malinin,
Эмм... а где ymaps.ready? Где инициализация карты?
alexmal1943.malinin
6 октября 2016, 15:51
Дмитрий Фаринный,
А это обязательно. Попробую, и если вы позволите, потом к вам еще обращусь.
Дмитрий Фаринный
6 октября 2016, 15:59
alexmal1943.malinin,
вначале ready потом с чем запускаешь карту после можно строить route и с ним уже работать
alexmal1943.malinin
6 октября 2016, 16:12
alexmal1943.malinin,
Добавил, но работать не стало
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Пример. Рассчет расстояния между двумя точками.</title>
<!--
Подключаем API карт
Если вы используете API локально, то в URL ресурса необходимо указывать протокол в стандартном виде (http://...)

<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script>
<script src="routes_to_point.js" type="text/javascript"></script>-->

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="http://yandex.st/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
<script src="https://api-maps.yandex.ru/2.0-stable/?load=package.standard&lang=ru-RU" type="text/javascript"></script>

<style>
body, html {
padding: 0;
margin: 0;
width: 100%;
height: 100%;
}
#map {
width: 100%;
height: 100%;
}
</style>
</head>

<script type="text/javascript"> // Старт вставки

alert("start");
var myMap;
ymaps.ready(init);
function init () {
// Создание экземпляра карты и его привязка к контейнеру с
// заданным id ("map").
myMap = new ymaps.Map('map', {

center: [55.539498,37.766213], // Видное
zoom: 12
});
}

ymaps.route(
[[55.539498,37.766213],
[55.800069,38.204116]],
{mapStateAutoApply: false}
).done(function (router) {
console.log(route.getHumanLength()); // длинна маршрута
console.log(route.getHumanTime()); // сколько примерно повремени
}


alert("st");


</script>
<body>
<div id="map" style="width: 600px; height: 400px"></div>
</body>
</html>
alexmal1943.malinin
6 октября 2016, 16:32
Дмитрий Фаринный,
А что значит, чем запускаешь карту? В отосланном вам примере, если отключить расчет расстояния, то карта запускается.
Дмитрий Фаринный
6 октября 2016, 18:10
alexmal1943.malinin,

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Пример. Рассчет расстояния между двумя точками.</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="//yandex.st/jquery/1.8.0/jquery.min.js" type="text/javascript"></script>
<script src="//api-maps.yandex.ru/2.1/?load=package.full&lang=ru_RU" type="text/javascript"></script>
<style>
body, html {
padding: 0;
margin: 0;
width: 100%;
height: 100%;
}
#map {
width: 100%;
height: 100%;
}
</style>
</head>
<script type="text/javascript"> // Старт вставки
alert("start");
var myMap;
function init () {
// Создание экземпляра карты и его привязка к контейнеру с
// заданным id ("map").
myMap = new ymaps.Map('map', {
center: [55.539498,37.766213], // Видное
zoom: 12
});

addRoute();

}
function addRoute() {
ymaps.route(
[[55.539498,37.766213],
[55.800069,38.204116]]
).then(function (router) {
alert(router.getHumanTime());
alert(router.getHumanLength());
});
};
ymaps.ready(init);
alert("st");
</script>
<body>
<div id="map" style="width: 600px; height: 400px"></div>
</body>
</html>
Дмитрий Фаринный
6 октября 2016, 18:14
alexmal1943.malinin,
 так тебе и маршрут на карте нарисуетfunction init () {
// Создание экземпляра карты и его привязка к контейнеру с
// заданным id ("map").
myMap = new ymaps.Map('map', {
center: [55.539498,37.766213], // Видное
zoom: 12
});

addRoute(myMap);

}
function addRoute(myMap) {
ymaps.route(
[[55.539498,37.766213],
[55.800069,38.204116]]
).then(function (router) {
alert(router.getHumanTime());
alert(router.getHumanLength());

myMap.geoObjects.add(router);
});
};
alexmal1943.malinin
6 октября 2016, 19:09
Дмитрий Фаринный,
Сначала взял без изменений, потом добавил еще и ready, но все равно не заработало.
Дмитрий Фаринный,
Большое спасибо. С вашей помощью я наконец-то справился. Меня интересовало только расстояние, поэтому сам маршрут на карте я заремил
function init () {
// Создание экземпляра карты и его привязка к контейнеру с
// заданным id ("map").
var myMap = new ymaps.Map('map', {
// center: [ssr,dsr], // между
center: [55.539498,37.766213], // Видное
zoom: 13
});
ymaps.route(
[[55.539498,37.766213],
[55.800069,38.204116]]
).then(function (route) {
// myMap.geoObjects.add(route);
alert(Math.round(route.getLength()/1000));

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