Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Не получается поставить метку на карту

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: google maps
algebra
Отправлено: 04 Августа, 2019 - 22:48:57
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Задача:
дать возможность пользователю поставить собственную метку с кратким описанием.

Проблема:
Карта google загружается, метки из базы данных берутся, а функция initialize() почему-то работать не хочет.

Подскажите как подправить этот код?
map.blade.php
Спойлер (Отобразить)


MapController.php
Спойлер (Отобразить)
 
 Top
Vladimir Kheifets
Отправлено: 05 Августа, 2019 - 08:51:18
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017  
Откуда: Германия, Бавария


Помог: 37 раз(а)




algebra пишет:
Задача:
дать возможность пользователю поставить собственную метку с кратким описанием.

Проблема:
Карта google загружается, метки из базы данных берутся, а функция initialize() почему-то работать не хочет.

Подскажите как подправить этот код?
map.blade.php
Спойлер (Отобразить)


MapController.php
Спойлер (Отобразить)


Добрый день!
1. В map.blade.php Вы показали JS function initialize()
В ней не определена переменная [b]latlng[/b]
Вам нужно посмотреть в консоле браузера ошибки JS
2. В MapController.php PHP-class GMaps()
PHP:
скопировать код в буфер обмена
  1. $gmap = new GMaps();
  2. $gmap->initialize($config);
Не очень понятно как метод initialize PHP-класса GMaps()
связан с JS function initialize() из map.blade.php
Удачи!
 
 Top
andrewkard
Отправлено: 05 Августа, 2019 - 11:03:03
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




Добрый день.
Нужно дебажить, смотрите в консоли что пишет, есть ошибки?
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <body onload="initialize()" onunload="GUnload()">
  3.  

точно не срабатывает?
Попробуйте просто

(Отредактировано автором: 05 Августа, 2019 - 11:08:22)

 
 Top
LIME
Отправлено: 05 Августа, 2019 - 14:38:02
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




andrewkard пишет:
Попробуйте просто
сработает до подгрузки скриптов и создания элементов
дебажить надо
algebra https://learn[dot]javascript[dot]ru/devtools
 
 Top
andrewkard
Отправлено: 05 Августа, 2019 - 21:38:38
Post Id


Участник


Покинул форум
Сообщений всего: 1372
Дата рег-ции: Нояб. 2014  


Помог: 30 раз(а)




LIME пишет:
сработает до подгрузки скриптов и создания элементов

решал так
CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. var initialize = function(){
  3.             return initMap(parseFloat($("#show-map").attr("data-lat")), parseFloat($("#show-map").attr("data-lng")), $("#show-map").attr("data-title"), true);
  4.         };
  5.  


CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. $('#show-map').click(function(e){
  3.         e.preventDefault();
  4.         var el = $(this);
  5.         var active = $(el).attr('data-active');
  6.         var key = $(el).attr('data-key');
  7.  
  8.         if(active == 1){
  9.             $(el).text($(el).attr('data-text-show'));
  10.             $(el).attr('data-active',0);
  11.         } else {
  12.             $(el).attr('data-active',1);
  13.             $(el).text($(el).attr('data-text-hide'));
  14.         }
  15.  
  16.         $( "#map" ).slideToggle( "slow", function() {
  17.             if(active == 0){
  18.                 getMapScript(key);
  19.             }
  20.         });
  21.     });
  22.  


CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function getMapScript(key){
  3.     if(!window.google){
  4.         var script = document.createElement('script');
  5.         script.type = 'text/javascript';
  6.         script.src = '//maps.googleapis.com/maps/api/js?key='+key+'&language=uk&region=UA&callback=initialize';
  7.         document.getElementsByTagName('head')[0].appendChild(script);
  8.     } else {
  9.         initialize();
  10.     }
  11. }
  12.  


CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function initMap(lat, lng, title, drag) {
  3.     var myLatLng = {lat: lat, lng: lng};
  4.  
  5.     var map = new google.maps.Map(document.getElementById('map'), {
  6.         zoom: 15,
  7.         center: myLatLng
  8.     });
  9.  
  10.     var marker = new google.maps.Marker({
  11.         position: myLatLng,
  12.         map: map,
  13.         title: title,
  14.         draggable:drag
  15.     });
  16.  
  17.     google.maps.event.addListener(marker, 'dragend', function(marker){
  18.         var latLng = marker.latLng;
  19.         currentLatitude = latLng.lat();
  20.         currentLongitude = latLng.lng();
  21.         $('#post-latitude').val(currentLatitude);
  22.         $('#post-longitude').val(currentLongitude);
  23.     });
  24. }
  25.  
 
 Top
LIME
Отправлено: 05 Августа, 2019 - 21:43:55
Post Id


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


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




andrewkard а зачем так муторно? Почему к событию загрузки не привязаться?
Еще есть хак с setTimeout в 0 чтобы выполниться после всего основного потока
(Добавление)
Подключили же jQuery
document.ready
 
 Top
algebra
Отправлено: 05 Августа, 2019 - 23:11:46
Post Id



Частый гость


Покинул форум
Сообщений всего: 171
Дата рег-ции: Февр. 2011  


Помог: 0 раз(а)




Хорошо, спрошу по-другому (потому как запуталась в этих мапах):
1. Есть контролер с метками из БД (в шапке темы)
его менять не будем
2. А в блэйд такого вида (спойдер) надо добавить функцию добавления меток
Напишите пожалуйста
Спойлер (Отобразить)
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB