|
|
|
| Друзья, доброе время суток!
спрошу здесь, ибо не знаю, где еще можно...
поиск в интернете пока не увенчался успехом в решении моего вопроса.
из-за незнания JAVAscript не могу соорудить код для следующей задачи:
Для http://comfort.маршрут22.рф/ хочу изготовить вызов в модальном окне карты Яндекс с маршрутизацией по 2 точкам,
первая - данные геолокации пользователя, вторая точка (геокоординаты) должна выводиться через переменную для каждой страницы.
то есть:
знаю, как делать кнопку "показать маршрут" (пример - кнопка "Смотреть на карте" вверху сайта), вызов модального окна, вызов карты в окне, это html+ css,
как сделать привязку каждой страницы через переменную в коде на JAVAscript - увы... вообще язык учу, но блииин время жалко. | |
|
|
|
|
|
|
|
для: AlexCar
(13.02.2015 в 13:10)
| | пример - кнопка "Смотреть на карте" вверху сайта), вызов модального окна
Это не модальное окно, к окну это отношения вообще не имеет. А работа с картами описана в их API, это в первую очередь нужно вам знать. Зайдите на Яндекс.Карты там есть описание API. | |
|
|
|
|
|
|
|
для: confirm
(13.02.2015 в 13:39)
| | Уважаемый, документацию изучаю тщательно - но в ней много информации и мой случай не встречался пока....
а вопрос здесь, на этом форуме задаю только по привязке javascript через переменную(ые) к страницам сайта, который в основном на php.
Ну попробую еще более детально описать задачу:
Представьте, что нужно через переменную выводить для каждой страницы разные значения. Конкретные геоокординаты (но это может быть и вес, и габариты, и что-то еще) будут прописываться вручную для каждого объекта (один объект - одна страница). Если задать переменную в php text_location, то как привязать это дело к скрипту
вот элементы [start], [end], к которым, как я понимаю нужно привязать
к [end] привязать text_location (который по идее должен быть разным у каждой страницы),
а к [start] привязать myCoords (который изменяется для каждого пользователя в зависимости от данных геолокации)
Привожу код JAVAscript полностью (он сформирован по описаниям документации Яндекса и работает!)
navigator.geolocation.getCurrentPosition(showMap, handleError);
function handleError(err) {
document.getElementById('map').innerHTML = err.message;
myCoords = [55.76, 37.64];
myZoom = 10;
ymaps.ready(init);
console.log(err);
}
var myMap, route;
var myCoords = [];
var myZoom = 10;
function init () {
myMap = new ymaps.Map('map', {
center: myCoords,
zoom: 10
});
}
function showMap(position) {
if (position == undefined) {
myCoords = [55.76, 37.64];
myZoom = 10;
} else {
myCoords.push(position.coords.latitude);
myCoords.push(position.coords.longitude);
myZoom = 16;
}
ymaps.ready(init);
$('#search_route').submit(function () {
var start = $("#start").val();
var end = $("#end").val();
ymaps.route([
[start], [end]], {
mapStateAutoApply: true
}).then(function (router) {
route && myMap.geoObjects.remove(route);
route = router;
myMap.geoObjects.add(route);
$("#resmarshrut").append('Расстояние: '+route.getHumanLength());
}, function (error) {
alert("Ошибка: " + error.message);
});
return false;
});
}
|
| |
|
|
|
|
|
|
|
для: confirm
(13.02.2015 в 13:39)
| | А как кстати называется это окно? С полгода уже думаю, что модальное))) | |
|
|
|
|
|
|
|
для: AlexCar
(13.02.2015 в 14:07)
| | В простонародье везде и у всех оно так и называется.
Вернее, когда вы так говорите, все понимают о чем вы говорите.
Но тут идейные буквоеды, которые всегда к этому слову цепляются.
Дело в том, что модальное окно, оно полностью блокирует приложение. Например, когда вы в любой программе открываете диалог "сохранить как", то пока не закроете его, в приложении ничего нажать не сможете. Или alert() в JS тоже сперва нужно закрыть, иначе даже вкладку сменить не получится.
А когда такое окно в верстке, то оно ничего не блокирует. Поэтому правильнее будет просто "всплывающее окно".
Хотя в мой огород тоже сейчас полетят камни, с надписью "это не окно". | |
|
|
|
|
|
|
|
для: AlexCar
(13.02.2015 в 14:07)
| | Помещайте свой код в ВВ-тег соответствующий иначе в нем никто не захочет копаться.
Что значит привязать к Javascript я не понимаю, ибо к нему ничего привязать нельзя.
Вы что хотите, проложить маршрут на карте или что? Если маршрут, то есть в описании API это.
Окно, это приложение. Модальные окна служат для диалога и не только для щелчка "Да/Нет", а действительно диалога, и единственный браузер который поддерживает таких (два) модальных диалога, это MSIE.
То что у вас выплывает не окно, а обычный элемент принадлежащий документу, средствами CSS который поместили над остальными элементами, а посредством JS выкатили его.
Если говорите об окне, значит подразумеваться должно быть окно, ибо в JS есть методы по его созданию, и не один. И с вашей задачей - уж лучше словами бы описать что за идея, а не какая-то привязка не понять к чему, и что в итоге должно быть. | |
|
|
|
|
|
|
|
для: confirm
(13.02.2015 в 19:10)
| | 1. тег использовал
2. нужно так написать Javascript , чтобы он прокладывал маршрут от точки геолокации пользователя (точка №1) до точки расположения каждого объекта (точка 2), то есть на каждой странице координаты разные (для каждого объекта заданы заранее, вручную).
3. Описание простого маршрута есть и это понятно как его прокладывать, Задача другая
4. окно работает и, надеюсь, будет. как правильно его называть - вопрос 1783-тий. | |
|
|
|
|
|
|
|
для: AlexCar
(13.02.2015 в 20:24)
| | Еще раз - это не окно, у вас единственно окно, это окно браузера. Не надо путать понятия и термины, иначе вас просто могут не понять.
Как и не понятно было чего вам там привязать надо. Если все таки маршрут, и благо знаете как, то получается не знаете как значения полей ввода присвоить двум переменным - end и start? | |
|
|
|
|
|
|
|
для: confirm
(14.02.2015 в 07:30)
| | Бинго! Спасибо что помогли объяснить! )))Да, все так! | |
|
|
|
|
|
|
|
для: AlexCar
(14.02.2015 в 08:17)
| | Если ваши поля ввода имеют id-атрибуты "start" и "end" (это следует из вашего кода), значит значение этих полей уже присваивается, в вызываемом методе по событию onsubmit:
$('#search_route').submit.....
Только нужно передавать массив координат [start, end], а вы передаете массив массивов [[start], [end]], что никак не вяжется с API. И вообще, эти промежуточные переменные совсем не нужны, можно записать так:
$('#search_route').submit(function () {
ymaps.route([$("#start").val(), $("#end").val()], ....
|
| |
|
|
|
|
|
|
|
для: confirm
(14.02.2015 в 08:46)
| | Говорят, что думать по-китайски сможешь научиться только через два года интенсивного изучения...
navigator.geolocation.getCurrentPosition(showMap, handleError);
function handleError(err) {
document.getElementById('map_product').innerHTML = err.message;
myCoords = [55.76, 37.64];
myZoom = 10;
ymaps.ready(init);
console.log(err);
}
var myMap, route;
var myCoords = [];
var myZoom = 10;
function init () {
myMap = new ymaps.Map('map_product', {
center: myCoords,
zoom: 10
});
}
function showMap(position) {
if (position == undefined) {
myCoords = [55.76, 37.64];
myZoom = 10;
} else {
myCoords.push(position.coords.latitude);
myCoords.push(position.coords.longitude);
myZoom = 16;
}
ymaps.ready(init);
$('#search_route').submit(function () {
ymaps.route([$("#start").val(), $("#end").val()],
var start = "myCoords",
var end = document.getElementById('geolocation'),
{
mapStateAutoApply: true
}).then(function (router) {
route && myMap.geoObjects.remove(route);
route = router;
myMap.geoObjects.add(route);
$("#resmarshrut").append('Расстояние: '+route.getHumanLength());
}, function (error) {
alert("Ошибка: " + error.message);
});
return false;
});
}
|
Обработке подвергся этот фрагмент
$('#search_route').submit(function () {
ymaps.route([$("#start").val(), $("#end").val()],
var start = "myCoords",
var end = document.getElementById('geolocation'),
|
geolocation - это переменная в PHP, которая корректно выводится...
Как здесь
не работает пока..
Ну как же это... | |
|
|
|
|
|
|
|
для: AlexCar
(16.02.2015 в 21:39)
| | Я бы вам посоветовал запустить отдельный маленький скрипт, который по двум введенным параметрам будет прокладывать маршрут, отладчик покажет ошибки. Но строго соблюдая API. Например, где вы такое увидели:
ymaps.route([$("#start").val(), $("#end").val()],
var start = "myCoords",
var end = document.getElementById('geolocation'),
при задании аргументов метода? Аргументы метода могут задаваться как объект {start : "myCoords"}, но никак не var start = "myCoords". Читайте API. | |
|
|
|
|