Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 19.05.2019, 10:39
Интересующийся
Отправить личное сообщение для Vladiiimir Посмотреть профиль Найти все сообщения от Vladiiimir
 
Регистрация: 18.05.2019
Сообщений: 19

Сообщение от рони Посмотреть сообщение
да, осталось только получить формат данных от вас.
Только до меня всё равно не доходит, где этот обработчик должен быть прописан?
Формат данных такой как указал здесь в примере:
<html>
<head>
    <title>Главная страница</title>
    <style>
        #map {
            height: 50%;
        }
        html, body {
            height: 100%;
        }
    </style>
    <script>
        var map, marker;
        function initMap() {
            map = new google.maps.Map(document.getElementById('map'), {
                center: new google.maps.LatLng(51.754207,55.106578),
                zoom: 8
            });
        }

        function UpdateGoogleMap(latitude, longitude) {
            latitude = (latitude && +latitude)||51.754207;
            longitude = (longitude && +longitude)||55.106578;
            map.setCenter({
                lat: latitude,
                lng: longitude
            });
            marker && marker.setMap(null);
            marker=new google.maps.marker({
                position: {
                    lat: latitude,
                    lng: longitude
                },
                map: map,
                title: 'Это здесь'
            });
        };
    </script>
    <!-- -->
    <script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCWH__g2XMzhes7PIk-8v2MbBSZTgMnBSg&callback=initMap"
            async defer></script>
</head>

<body>
<div>
    <table>
        <thead>
        <tr>
            <th>idPost</th>
            <th>namePost</th>
            <th>distanceBeetwenSensors</th>
            <th>geographkoords</th>
        </tr>
        </thead>
        <tbody>
        <c:forEach items="${listPosts}" var="post">
            <tr>
                <td>1</td>
                <td>г.Самара</td>
                <td>2</td>
                <td>55.09 52.07</td>
            </tr>
        </c:forEach>
        </tbody>
    </table>

</div>
<div id="map"></div>

</body>
</html>
Ответить с цитированием
  #12 (permalink)  
Старый 19.05.2019, 10:43
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Vladiiimir,
ждите...
Ответить с цитированием
  #13 (permalink)  
Старый 19.05.2019, 10:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Vladiiimir,
проверьте
<script>
        var map, marker;
        function initMap() {
            map = new google.maps.Map(document.getElementById('map'), {
                center: new google.maps.LatLng(51.754207,55.106578),
                zoom: 8
            });
        }

        function UpdateGoogleMap(latitude, longitude) {
            latitude = (latitude && +latitude)||51.754207;
            longitude = (longitude && +longitude)||55.106578;
            map.setCenter({
                lat: latitude,
                lng: longitude
            });
            marker && marker.setMap(null);
            marker=new google.maps.Marker({
                position: {
                    lat: latitude,
                    lng: longitude
                },
                map: map,
                title: 'Это здесь'
            });
        };

    addEventListener("click", ({target}) => {
    var tr = target.closest("tbody > tr");
    if(!tr) return;
    var position = tr.querySelector("td:last-child").textContent;
    position = position.split(/\s+/).map(Number);
    UpdateGoogleMap(...position)
    });

    </script>

Последний раз редактировалось рони, 19.05.2019 в 11:37.
Ответить с цитированием
  #14 (permalink)  
Старый 19.05.2019, 11:38
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от Vladiiimir
marker=new google.maps.marker({
new google.maps.Marker
Ответить с цитированием
  #15 (permalink)  
Старый 19.05.2019, 14:32
Интересующийся
Отправить личное сообщение для Vladiiimir Посмотреть профиль Найти все сообщения от Vladiiimir
 
Регистрация: 18.05.2019
Сообщений: 19

Сообщение от рони Посмотреть сообщение
Vladiiimir,
проверьте
Слушатель срабатывает, но судя по отладчику googlehrome в функцию UpdateGoogleMap передаётся пустое значение (переменная position)https://drive.google.com/open?id=1BH...9x9Fp_m_HWaLOD

Можете прокомментировать, что значит переменная target?
Что мы делаем в строках:
var position = tr.querySelector("td:last-child").textContent;
        position = position.split(/\s+/).map(Number);

Последний раз редактировалось Vladiiimir, 19.05.2019 в 14:36.
Ответить с цитированием
  #16 (permalink)  
Старый 19.05.2019, 14:40
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Vladiiimir,
вы поменяли расположение ячейки с данными!!!
сделайте ячейке класс например <td class="geo">55.09 52.07</td>
и тогда
var position = tr.querySelector("td.geo").textContent;
Ответить с цитированием
  #17 (permalink)  
Старый 19.05.2019, 14:44
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Vladiiimir,
или так
var position = tr.querySelector("td:nth-child(4)").textContent;
Ответить с цитированием
  #18 (permalink)  
Старый 19.05.2019, 15:05
Интересующийся
Отправить личное сообщение для Vladiiimir Посмотреть профиль Найти все сообщения от Vladiiimir
 
Регистрация: 18.05.2019
Сообщений: 19

Сообщение от рони Посмотреть сообщение
Vladiiimir,
вы поменяли расположение ячейки с данными!!!
сделайте ячейке класс например <td class="geo">55.09 52.07</td>
и тогда
var position = tr.querySelector("td.geo").textContent;
Работает! Громадная благодарность!

А можно вот как мы сделали привязку к ячейке <td class="geo">55.09 52.07</td>, аналогично сделать привязку слушателя к таблице?
Ответить с цитированием
  #19 (permalink)  
Старый 19.05.2019, 15:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

Сообщение от Vladiiimir
А можно вот как мы сделали привязку к ячейке <td class="geo">55.09 52.07</td>, аналогично сделать привязку слушателя к таблице?
не понимаю вопроса, можно подробнее?
Ответить с цитированием
  #20 (permalink)  
Старый 19.05.2019, 15:12
Интересующийся
Отправить личное сообщение для Vladiiimir Посмотреть профиль Найти все сообщения от Vladiiimir
 
Регистрация: 18.05.2019
Сообщений: 19

Сообщение от рони Посмотреть сообщение
не понимаю вопроса, можно подробнее?
Если у меня на странице добавится ещё одна таблица, то этот слушатель ведь будет реагировать и на щелчки по 2-ой таблицы?
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Three.js - обработка повторного события на объекте alex.zubkov777@gmail.com Общие вопросы Javascript 1 23.03.2019 19:25
почему не обрабатываются события в динамически добавленых строках таблицы boris2000 Events/DOM/Window 2 10.11.2016 14:04
События мыши ghost666 Events/DOM/Window 6 21.10.2016 11:41
Обработка события click для iframe dqrest Events/DOM/Window 0 22.09.2015 10:17
Обработка события внутри события grifangel Общие вопросы Javascript 6 04.09.2014 12:34