Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

HTML+CSS+JavaScript

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: карты Яндекс с маршрутизацией по 2 точкам
 
 автор: AlexCar   (13.02.2015 в 13:10)   письмо автору
 
 

Друзья, доброе время суток!
спрошу здесь, ибо не знаю, где еще можно...
поиск в интернете пока не увенчался успехом в решении моего вопроса.
из-за незнания JAVAscript не могу соорудить код для следующей задачи:
Для http://comfort.маршрут22.рф/ хочу изготовить вызов в модальном окне карты Яндекс с маршрутизацией по 2 точкам,
первая - данные геолокации пользователя, вторая точка (геокоординаты) должна выводиться через переменную для каждой страницы.
то есть:
знаю, как делать кнопку "показать маршрут" (пример - кнопка "Смотреть на карте" вверху сайта), вызов модального окна, вызов карты в окне, это html+ css,
как сделать привязку каждой страницы через переменную в коде на JAVAscript - увы... вообще язык учу, но блииин время жалко.

  Ответить  
 
 автор: confirm   (13.02.2015 в 13:39)   письмо автору
 
   для: AlexCar   (13.02.2015 в 13:10)
 

пример - кнопка "Смотреть на карте" вверху сайта), вызов модального окна

Это не модальное окно, к окну это отношения вообще не имеет. А работа с картами описана в их API, это в первую очередь нужно вам знать. Зайдите на Яндекс.Карты там есть описание API.

  Ответить  
 
 автор: AlexCar   (13.02.2015 в 14:05)   письмо автору
 
   для: 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;
            });
         }

  Ответить  
 
 автор: AlexCar   (13.02.2015 в 14:07)   письмо автору
 
   для: confirm   (13.02.2015 в 13:39)
 

А как кстати называется это окно? С полгода уже думаю, что модальное)))

  Ответить  
 
 автор: Sfinks   (13.02.2015 в 17:17)   письмо автору
 
   для: AlexCar   (13.02.2015 в 14:07)
 

В простонародье везде и у всех оно так и называется.
Вернее, когда вы так говорите, все понимают о чем вы говорите.
Но тут идейные буквоеды, которые всегда к этому слову цепляются.
Дело в том, что модальное окно, оно полностью блокирует приложение. Например, когда вы в любой программе открываете диалог "сохранить как", то пока не закроете его, в приложении ничего нажать не сможете. Или alert() в JS тоже сперва нужно закрыть, иначе даже вкладку сменить не получится.
А когда такое окно в верстке, то оно ничего не блокирует. Поэтому правильнее будет просто "всплывающее окно".
Хотя в мой огород тоже сейчас полетят камни, с надписью "это не окно".

  Ответить  
 
 автор: confirm   (13.02.2015 в 19:10)   письмо автору
 
   для: AlexCar   (13.02.2015 в 14:07)
 

Помещайте свой код в ВВ-тег соответствующий иначе в нем никто не захочет копаться.
Что значит привязать к Javascript я не понимаю, ибо к нему ничего привязать нельзя.
Вы что хотите, проложить маршрут на карте или что? Если маршрут, то есть в описании API это.

Окно, это приложение. Модальные окна служат для диалога и не только для щелчка "Да/Нет", а действительно диалога, и единственный браузер который поддерживает таких (два) модальных диалога, это MSIE.
То что у вас выплывает не окно, а обычный элемент принадлежащий документу, средствами CSS который поместили над остальными элементами, а посредством JS выкатили его.

Если говорите об окне, значит подразумеваться должно быть окно, ибо в JS есть методы по его созданию, и не один. И с вашей задачей - уж лучше словами бы описать что за идея, а не какая-то привязка не понять к чему, и что в итоге должно быть.

  Ответить  
 
 автор: AlexCar   (13.02.2015 в 20:24)   письмо автору
 
   для: confirm   (13.02.2015 в 19:10)
 

1. тег использовал
2. нужно так написать Javascript , чтобы он прокладывал маршрут от точки геолокации пользователя (точка №1) до точки расположения каждого объекта (точка 2), то есть на каждой странице координаты разные (для каждого объекта заданы заранее, вручную).
3. Описание простого маршрута есть и это понятно как его прокладывать, Задача другая
4. окно работает и, надеюсь, будет. как правильно его называть - вопрос 1783-тий.

  Ответить  
 
 автор: confirm   (14.02.2015 в 07:30)   письмо автору
 
   для: AlexCar   (13.02.2015 в 20:24)
 

Еще раз - это не окно, у вас единственно окно, это окно браузера. Не надо путать понятия и термины, иначе вас просто могут не понять.
Как и не понятно было чего вам там привязать надо. Если все таки маршрут, и благо знаете как, то получается не знаете как значения полей ввода присвоить двум переменным - end и start?

  Ответить  
 
 автор: AlexCar   (14.02.2015 в 08:17)   письмо автору
 
   для: confirm   (14.02.2015 в 07:30)
 

Бинго! Спасибо что помогли объяснить! )))Да, все так!

  Ответить  
 
 автор: confirm   (14.02.2015 в 08:46)   письмо автору
 
   для: 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()], ....

  Ответить  
 
 автор: AlexCar   (16.02.2015 в 21:39)   письмо автору
 
   для: 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, которая корректно выводится...
Как здесь
не работает пока..
Ну как же это...

  Ответить  
 
 автор: confirm   (16.02.2015 в 21:50)   письмо автору
 
   для: 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.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования