![]() |
![]() |
![]() |
|
Яндекс карты в 1с | ☑ | ||
---|---|---|---|---|
0
also
10.03.10
✎
13:58
|
Помогите кто разбирается. Я в яваскрипте не в зуб ногой. По примерам с яндекса сделал такую штуку:
Процедура ВыполнитьНажатие(Кнопка) КодХТМЛ = " |<!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=utf-8"" /> | <script src=""http://api-maps.yandex.ru/1.1/index.xml?key=ANpUFEkBAAAAf7jmJwMAHGZHrcKNDsbEqEVjEUtCmufxQMwAAAAAAAAAAAAvVrubVT4btztbduoIgTLAeFILaQ=="" type=""text/javascript""></script> | <script type=""text/javascript""> | var map, geoResult; // Создание обработчика для события window.onLoad | YMaps.jQuery(function () { // Создание экземпляра карты и его привязка к созданному контейнеру | map = new YMaps.Map(YMaps.jQuery(""#YMapsID"")[0]); // Установка для карты ее центра и масштаба | map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10); // Добавление элементов управления | var toolBar = new YMaps.ToolBar(); | map.addControl(toolBar); | map.addControl(new YMaps.Zoom()); | map.addControl(new YMaps.TypeControl()); | map.enableScrollZoom(); | }); // Функция для отображения результата геокодирования // Параметр value - адрес объекта для поиска | function showAddress (value) { // Запуск процесса геокодирования | var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()}); // Создание обработчика для успешного завершения геокодирования | YMaps.Events.observe(geocoder, geocoder.Events.Load, function () { // Если объект был найден, то добавляем его на карту // и центрируем карту по области обзора найденного объекта | if (this.length()) { | geoResult = this.get(0); | map.addOverlay(geoResult); | map.setBounds(geoResult.getBounds()); |}else { | alert(""Ничего не найдено"") | } | }); // Процесс геокодирования завершен неудачно | YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error) { | alert(""Произошла ошибка: "" + error); | }) |} |</script> |</head> |<body> | <form action=""#"" onsubmit=""showAddress(this.address.value);return false;""> | <p> | <input type=""text"" id=""address"" style=""width:525px;"" value=""Москва"" /> | <input type=""submit"" value=""Искать"" /> | </p> | <div id=""YMapsID"" style=""width:800px;height:600px""></div> |</form> | <p><b>Примеры адресов:</b></p> | <a href=""javascript:showAddress('Москва, ул.Самокатная, д.1., стр.21')"">Москва, ул.Самокатная, д.1., стр.21</a><br /> | <a href=""javascript:showAddress('Москва, ул. Станиславского, д.21, стр.3')"">Москва, ул. Станиславского, д.21, стр.3</a><br /> |<a href=""javascript:showAddress('Балашиха, Полевой пр.')"">Балашиха, Полевой пр.</a><br /> |<a href=""javascript:showAddress('Измайловский пр-т, д.73/2')"">Измайловский пр-т, д.73/2</a><br /> |<a href=""javascript:showAddress('Сергиев Посад, пр-т Красной армии')"">Сергиев Посад, пр-т Красной армии</a> //Строка для замены |//~~~~~~~~~~~~~~~~ |</body> | |</html> |"; ЭлементыФормы.Карта.УстановитьТекст(КодХТМЛ); КонецПроцедуры Получается такая штука: http://s19.radikal.ru/i192/1003/cd/decea9ef97cf.jpg В принципе все хорошо, но только я хочу вынести искалку с хтмла на форму обработки. На кнопку повесил такой код: Процедура ИскатьНажатие(Элемент) КодХТМЛ = СтрЗаменить(КодХТМЛ,"//~~~~~~~~~~~~~~~~","showAddress('"+ЭлементыФормы.Адрес.Значение+"');"); ЭлементыФормы.Карта.УстановитьТекст(КодХТМЛ); КонецПроцедуры Ошибок не выдает, но функция showAddress не вызывается, и соответсвенно поиск не отрабатывает. ЧЯДНТ? |
|||
1
also
10.03.10
✎
13:59
|
Чето скринщот криво отобразался. Еще раз http://s19.radikal.ru/i192/1003/cd/decea9ef97cf.jpg
|
|||
2
also
10.03.10
✎
14:06
|
Если переношу вызов функции в тело скрипта, то пишет 'map' есть null или не является объектом
|
|||
3
Asmody
10.03.10
✎
14:11
|
попробуй в <body onload=> запихнуть
|
|||
4
also
10.03.10
✎
14:12
|
(3) ща попробую
|
|||
5
elisem
10.03.10
✎
14:14
|
закладка
|
|||
6
also
10.03.10
✎
14:18
|
Спасибо Асмодей!
Вот так прокатило: |<body //~~> а потом: КодХТМЛ = СтрЗаменить(КодХТМЛ,"//~~","onload = ""javascript:showAddress('"+ЭлементыФормы.Адрес.Значение+"')"""); в куда еще и каким образом можно вызов этой функции впихнуть? |
|||
7
Asmody
10.03.10
✎
14:21
|
теоретически, можно сделать html-форму со скрытыми полями (type=hidden), заполнять ее через DOM, а потом эту форму сабмитить
|
|||
8
Asmody
10.03.10
✎
14:21
|
(7)+ но я не пробовал
|
|||
9
also
10.03.10
✎
14:29
|
ладно попробую, спс
|
|||
10
NcSteel
10.03.10
✎
14:33
|
Закладка
|
|||
11
lxs
10.03.10
✎
14:36
|
tab
|
|||
12
YHVVH
10.03.10
✎
14:43
|
прикольно +1
|
|||
13
also
10.03.10
✎
17:06
|
Вообще изначально задача была поставлена такая: есть несколько адресов, нужно их показать на карте метками. Все получилось.
Вот код: Перем КодХТМЛ; Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) КодХТМЛ = " |<!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=utf-8"" /> | <script src=""http://api-maps.yandex.ru/1.1/index.xml?key=ANpUFEkBAAAAf7jmJwMAHGZHrcKNDsbEqEVjEUtCmufxQMwAAAAAAAAAAAAvVrubVT4btztbduoIgTLAeFILaQ=="" type=""text/javascript""></script> | <script type=""text/javascript""> | var map, geoResult; // Создание обработчика для события window.onLoad | YMaps.jQuery(function () { // Создание экземпляра карты и его привязка к созданному контейнеру | map = new YMaps.Map(YMaps.jQuery(""#YMapsID"")[0]); // Установка для карты ее центра и масштаба | map.setCenter(new YMaps.GeoPoint(37.64, 55.76), 10); // Добавление элементов управления | var toolBar = new YMaps.ToolBar(); | map.addControl(toolBar); | map.addControl(new YMaps.Zoom()); | map.addControl(new YMaps.TypeControl()); | map.enableScrollZoom(); | }); // Функция для отображения результата геокодирования // Параметр value - адрес объекта для поиска | function showAddress (value) { // Запуск процесса геокодирования | var geocoder = new YMaps.Geocoder(value, {results: 1, boundedBy: map.getBounds()}); // Создание обработчика для успешного завершения геокодирования | YMaps.Events.observe(geocoder, geocoder.Events.Load, function () { // Если объект был найден, то добавляем его на карту // и центрируем карту по области обзора найденного объекта | if (this.length()) { | geoResult = this.get(0); | map.addOverlay(geoResult); | map.setBounds(geoResult.getBounds()); |}else { | alert(""Ничего не найдено"") | } | }); // Процесс геокодирования завершен неудачно | YMaps.Events.observe(geocoder, geocoder.Events.Fault, function (geocoder, error) { | alert(""Произошла ошибка: "" + error); | }) |} //Тут функция, которая формируется динамически |//~~Функция showA~~ |</script> |</head> |<body //~~onload~~> | <div id=""YMapsID"" style=""width:800px;height:600px""></div> |</form> |</body> | |</html> |"; ЭлементыФормы.Карта.УстановитьТекст(КодХТМЛ); КонецПроцедуры Процедура ПоказатьАдреса(Кнопка) МассивАдресов = Адреса.ВыгрузитьКолонку("Адрес"); НачФункции = "function showA () {"; ТелоФункции = ""; Для каждого Элемент Из МассивАдресов Цикл ТелоФункции = ТелоФункции + Символы.ПС + "showAddress('"+Элемент+"')"; КонецЦикла; КонФункции = Символы.ПС + "}"; ФункцияShowA = НачФункции + ТелоФункции + КонФункции; КодХТМЛ = СтрЗаменить(КодХТМЛ,"//~~Функция showA~~",ФункцияShowA); КодХТМЛ = СтрЗаменить(КодХТМЛ,"//~~onload~~","onload = ""javascript:showA()"""); ЭлементыФормы.Карта.УстановитьТекст(КодХТМЛ); КонецПроцедуры Вот результат: http://s50.radikal.ru/i127/1003/66/f86374a5a45d.jpg |
|||
14
also
10.03.10
✎
17:12
|
Вот еще ссылка полезная тем, кто захочет подобной шнягой заниматься http://api.yandex.ru/maps/jsapi/doc/dg/concepts/About.xml
|
|||
15
Point
10.03.10
✎
17:15
|
Еще можно было бы построение маршрута прикрутить.
|
|||
16
also
10.03.10
✎
17:17
|
(15) все можно...Просто пока не нужно :) По ссылке в (14) есть примеры, в том числе с маршрутами
|
|||
17
Xao
10.03.10
✎
17:19
|
а пробки можно прикрутить?
|
|||
18
Asmody
10.03.10
✎
17:20
|
ой, Плеханова! да мы ж соседи почти :)
|
|||
19
also
10.03.10
✎
17:22
|
(17)YMaps.Router(wayPoints, viaPoints, options)
Прокладывает маршрут через заданные точки. options.avoidTrafficJams Boolean false true - строить маршрут с учетом пробок, false - без учета пробок. При использовании опции учитывайте, что объезд пробок не всегда возможен. |
|||
20
also
10.03.10
✎
17:22
|
(18) да, я в принципе от балды ввел. Но у меня отец там работает, да и учился я недалеко :)
|
|||
21
quest
10.03.10
✎
17:46
|
закладка
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |