Перейти к содержимому


Автозаполнение поля КБ по Google API


Сообщений в теме: 11

#1 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 04 Февраль 2015 - 08:59

Привет, вот такая задача, необходимо чтобы в режиме редактирования поля "Откуда" при заполнении - вылазит подсказка (как на гугл картах).

Пробовал код:

var script = document.createElement('script');
script.src = '//maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&libraries=places';//Замени на нужный URL
document.getElementsByTagName('head')[0].appendChild(script);
	  function initialize() {
	    var input = document.getElementById('value12040');
	    var options = {
		  types: ['(regions)'],
	    };
	    var autocomplete = new google.maps.places.Autocomplete(input, options);
	    google.maps.event.addListener(autocomplete, 'place_changed', function() {
		  var place = autocomplete.getPlace(); //получаем место
		  console.log(place);
		  console.log(place.name);  //название места
		  console.log(place.id);  //уникальный идентификатор места
	    });
	  }
	  google.maps.event.addDomListener(window, 'load', initialize);


Но не срабатывает! Браузер ругается на "google.maps.event.addDomListener(window, 'load', initialize);". Кто может подскажет как решить задачу!

#2 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 04 Февраль 2015 - 10:55

Как именно то ругается?

#3 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 04 Февраль 2015 - 11:40

Ну конечно сам скрипт не работает, при просмотре через "Посмотреть код страницы" далеее "Ошибки на странице" - ругается

Uncaught ReferenceError: google is not definedview_line2.php?table=271&filter=491&line=1824:5841 (anonymous function)


#4 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 04 Февраль 2015 - 14:35

//Замени на нужный URL

Может в этом дело? Скрипт не подключается, т.к. его нет по такому адресу, соответственно и объекта google не наблюдается.

Например, в пути из вашего кода не указан протокол http в его начале.

#5 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 05 Февраль 2015 - 08:54

Протокол не помогает ( я так понял что путь к библиотеке должен указываться в шапке ? есть мысли как привязать (другим способом) к подзагрузке в шапке ?

#6 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 05 Февраль 2015 - 09:30

Переделал на Яндекс API - в обычной html странице все работает! - в КБ нет - "ymaps is not defined"

var script = document.createElement('script');
script.src = 'http://api-maps.yandex.ru/2.1/?lang=ru_RU&load=SuggestView&onload=onLoad';
document.getElementsByTagName('head')[0].appendChild(script);

var myMap;

// Дождёмся загрузки API и готовности DOM.
ymaps.ready(init);

function init () {
    // Создание экземпляра карты и его привязка к контейнеру с
    // заданным id ("map").
    myMap = new ymaps.Map('map', {
        // При инициализации карты обязательно нужно указать
        // её центр и коэффициент масштабирования.
        center: [55.76, 37.64], // Москва
        zoom: 10
    });
}
function onLoad (ymaps) {
var suggestView = new ymaps.SuggestView('value12040');
}


#7 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Февраль 2015 - 09:50

Просмотр сообщенияDinak (05 Февраль 2015 - 08:54) писал:

есть мысли как привязать (другим способом) к подзагрузке в шапке ?

Можно использовать переменную ADDITIONAL_JAVASCRIPT для этого (примеры есть на форуме).

#8 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 05 Февраль 2015 - 11:30

Просмотр сообщенияCbCoder (15 Апрель 2014 - 10:00) писал:

Способ с css давно устарел, это был "обходной маневр" в старые времена за неимением другим. Сейчас можно использовать глобальную переменную $ADDITIONAL_JAVASCRIPT_INCLUDE, которой присваивается JS код внутри тегов <script>:

$ADDITIONAL_JAVASCRIPT_INCLUDE = "<script type='text/javascript'>ваш код</script>";

или

$ADDITIONAL_JAVASCRIPT_INCLUDE = "<script type='text/javascript' src='путь к вашему файлу'></script>";


Если необходимо подключение данного скрипта на всех страницах, добавляете файл include/functions_custom.php (через менеджер внешних файлов) и определяете переменную там. Файл functions_custom.php подключается автоматом, если он добавлен и служит для определения ваших собственных глобальных функций и переменных.


А если мне нужно чтобы скрипт подгружался только на одну таблицу (например только в таблице "Запросы")?

Я попробовал добавив include/functions_custom.php - у меня потом на каждой странице КБ над шапкой вылезла надпись - $ADDITIONAL_JAVASCRIPT_INCLUDE ="";

#9 CbCoder

    Активный участник

  • Программист ООО "КБ"
  • PipPipPip
  • 8 762 сообщений
  • Пол:Мужчина
  • Город:Казань

Отправлено 05 Февраль 2015 - 12:13

А тэги <?php вы не включали что ли в functions_custom.php ?

#10 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 05 Февраль 2015 - 12:28

Вроде все подключись, но в редакторе кода браузера - ошибки!

Uncaught TypeError: Cannot read property 'offsetWidth' of null
combine.xml?modules=,$370hqX2L,82Eq5,.qH2PqmqhqaqVqS,)qKqNq792qG,Z242123q)qf.x39!(qv9(9q9QqT,Vqz4Q5…:28 GET http://suggest-maps.yandex.ru/suggest-geo?callback=id_142312815561819767756…=tp&part=Y&lang=ru_RU&n=5&origin=jsapi2Geocoder&bbox=-180%2C-90%2C180%2C90 net::ERR_EMPTY_RESPONSE


#11 Александр Пономарев

    Активный участник

  • Пользователи
  • PipPipPip
  • 435 сообщений
  • Пол:Мужчина
  • Город:Таганрог

Отправлено 18 Февраль 2015 - 18:47

Просмотр сообщенияDinak (05 Февраль 2015 - 09:30) писал:

Переделал на Яндекс API - в обычной html странице все работает! - в КБ нет - "ymaps is not defined"

var script = document.createElement('script');
script.src = 'http://api-maps.yandex.ru/2.1/?lang=ru_RU&load=SuggestView&onload=onLoad';
document.getElementsByTagName('head')[0].appendChild(script);

var myMap;

// Дождёмся загрузки API и готовности DOM.
ymaps.ready(init);

function init () {
	// Создание экземпляра карты и его привязка к контейнеру с
	// заданным id ("map").
	myMap = new ymaps.Map('map', {
		// При инициализации карты обязательно нужно указать
		// её центр и коэффициент масштабирования.
		center: [55.76, 37.64], // Москва
		zoom: 10
	});
}
function onLoad (ymaps) {
var suggestView = new ymaps.SuggestView('value12040');
}

Вы через echo выводите этот текст или как он интерпретируется?

#12 Dinak

    Активный участник

  • Пользователи
  • PipPipPip
  • 207 сообщений
  • Пол:Мужчина
  • Город:Новосибирск

Отправлено 19 Февраль 2015 - 09:07

Вы через echo выводите этот текст или как он интерпретируется?

Проблему решил на Google Maps API
Подключил API через $Addictional_script
В текстовом поле пишу код JS
function initialize() {
var input = document.getElementById('ID поля в режиме редактирования');
var autocomplete = new google.maps.places.Autocomplete(input);
}
google.maps.event.addDomListener(window, 'load', initialize);

И вуаля! :) Спасибо пользователю MAKSN за помощь :)))





Количество пользователей, читающих эту тему: 5

0 пользователей, 5 гостей, 0 анонимных