Вывод всех точек на карте

Тема в разделе "JavaScript", создана пользователем Amazko, 25 дек 2015.

Модераторы: ZiX
  1. Amazko

    Amazko #АдминОтпиши

    Moderator
    Регистр.:
    4 мар 2012
    Сообщения:
    572
    Симпатии:
    312
    Есть модуль для opencart который выводит на карте гугла метку на той улице которую ввел в адинке в карточке товара.

    Вот нехитрый код вывода самой карты.

    PHP:
    <script>
        window.onload = function () { 
            var styles = [{
                stylers: [
              { "saturation": 0 }
                ]
              }]; 
            var options = { 
            mapTypeControlOptions: { 
                mapTypeIds: ['Styled'] 
            }, 
                center: new google.maps.LatLng(<?php echo $rvgmap?>), 
                zoom: 17, 
                disableDefaultUI: false,
                scrollwheel: false,
                mapTypeId: 'Styled' 
            };
            var div = document.getElementById('map_canvas'); 
            var map = new google.maps.Map(div, options); 
            var styledMapType = new google.maps.StyledMapType(styles, { name: '<?php $str $heading_title; echo htmlspecialchars_decode($str); ?>' });
            map.mapTypes.set('Styled', styledMapType);
         
          var image = 'image/data/map-marker.png';
         
          var myLoc = '';
         
          var marker = new google.maps.Marker({
            position: new google.maps.LatLng(<?php echo $rvgmap?>),
            icon: image,
            map: map
          });
          $('a[href=#tab-rvgmap]').on('click', function() {
        setTimeout(function(){
             google.maps.event.trigger(map, 'resize');
             map.setZoom(17); //You need to reset zoom
             map.setCenter(marker.getPosition()); //You need to reset the center
        }, 50);
    });
        };
        google.maps.event.addDomListener(window, 'load', initialize);
    </script>
    в итоге он выводит то что занесено сюда <?php echo $rvgmap; ?>
    И в бД в таблице товара есть столбец с кординатами.
    Screenshot_13.png

    Тоесть пусть себе модуль работает как есть, и выводит отдельную карту с меткой в карточку товара.

    Как сделать вывод всех координат которые будут собраны в этом столбце rvgmap на одной карте?
     
  2. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    352
    Симпатии:
    223
    Точно не знаю, по моему надо это копировать для каждой точки:
    Код:
    var marker = new google.maps.Marker({
            position: new google.maps.LatLng(<?php echo $rvgmap; ?>),
            icon: image,
            map: map
          });
    Как-то так:
    Код:
    var marker1 = new google.maps.Marker({
            position: new google.maps.LatLng(<?php echo $rvgmap1; ?>),
            icon: image,
            map: map
          });
    var marker2 = new google.maps.Marker({
            position: new google.maps.LatLng(<?php echo $rvgmap2; ?>),
            icon: image,
            map: map
          });
    var marker3 = new google.maps.Marker({
            position: new google.maps.LatLng(<?php echo $rvgmap3; ?>),
            icon: image,
            map: map
          });
    Имя переменной не играет большого значения, если у Вас они просто отмечены.

    Переменная нужна для управления маркером

    http://habrahabr.ru/post/110460/
     
    Amazko нравится это.
  3. Amazko

    Amazko #АдминОтпиши

    Moderator
    Регистр.:
    4 мар 2012
    Сообщения:
    572
    Симпатии:
    312
    но получается координаты в одной переменной на каждой страницы товара которая берет координаты из поля товара.
    PHP:
    rvgmap '" . $this->db->escape($data['rvgmap']

    PHP:
    $this->data['rvgmap'] = $product_info['rvgmap'];
     
  4. ykpon

    ykpon

    Регистр.:
    8 дек 2012
    Сообщения:
    248
    Симпатии:
    143
    Нужно все записи получить из базы данных и перебирать полученный массив:
    PHP:
    <? foreach($resul as $row): ?>
    var marker<?=$row['id']?> = new google.maps.Marker({
        position: new google.maps.LatLng(<?=$row['rvgmap']?>),
        icon: image,
        map: map
    });
    <? endforeach; ?>
     
    Amazko нравится это.
  5. Amazko

    Amazko #АдминОтпиши

    Moderator
    Регистр.:
    4 мар 2012
    Сообщения:
    572
    Симпатии:
    312
    это вставлять на той странице на которой хочу вывести карту или под маркером в етом коде выше?
     
  6. ykpon

    ykpon

    Регистр.:
    8 дек 2012
    Сообщения:
    248
    Симпатии:
    143
    Это на той странице, где нужно выводить все метки, имеющиеся в базе данных.
    Учти, что в базе должна присутствовать колонка "id" у каждой записи. Обычно она имеет свойство "auto increment".
    Либо, если ее нет, заменить:
    PHP:
    <? foreach($resul as $row): ?>
    на:
    PHP:
    <? foreach($resul as $key => $row): ?>
    и:
    PHP:
    <?=$row['id']?>
    на:
    PHP:
    <?=$key?>
    А если колонка "rvgmap" будет у какой то записи пуста, то появится "пустая" метка на карте.
    Ну и не забывай, что в $result должен быть массив данных из базы.
     
  7. Amazko

    Amazko #АдминОтпиши

    Moderator
    Регистр.:
    4 мар 2012
    Сообщения:
    572
    Симпатии:
    312
    колонка id присуцтвует, ето же каждый товар с таким значением.
    PHP:
    <div id="tab-rvgmap" class="tab-content">
      <style>
          #map_canvas {display:block; width:100%; height:400px;}
      </style>
     
      <div id="map_canvas"></div>
     
    <script src="https://maps.googleapis.com/maps/api/js?=v=3.exp&sensor=false"></script>
    <script>
        window.onload = function () { 
            var styles = [{
                stylers: [
              { "saturation": 0 }
                ]
              }]; 
            var options = { 
            mapTypeControlOptions: { 
                mapTypeIds: ['Styled'] 
            }, 
                center: new google.maps.LatLng(<?php echo $rvgmap?>), 
                zoom: 17, 
                disableDefaultUI: false,
                scrollwheel: false,
                mapTypeId: 'Styled' 
            };
            var div = document.getElementById('map_canvas'); 
            var map = new google.maps.Map(div, options); 
            var styledMapType = new google.maps.StyledMapType(styles, { name: '<?php $str $heading_title; echo htmlspecialchars_decode($str); ?>' });
            map.mapTypes.set('Styled', styledMapType);
         
          var image = 'image/data/map-marker.png';
         
          var myLoc = '';
         
          <? foreach($resul as $row): ?>
    var marker<?=$row['id']?> = new google.maps.Marker({
        position: new google.maps.LatLng(<?=$row['rvgmap']?>),
        icon: image,
        map: map
    });
    <? endforeach; ?>
          $('a[href=#tab-rvgmap]').on('click', function() {
        setTimeout(function(){
             google.maps.event.trigger(map, 'resize');
             map.setZoom(17); //You need to reset zoom
             map.setCenter(marker.getPosition()); //You need to reset the center
        }, 50);
    });
        };
        google.maps.event.addDomListener(window, 'load', initialize);
    </script>
    </div>
    так ?
     
    Q_BASIC нравится это.
  8. Amazko

    Amazko #АдминОтпиши

    Moderator
    Регистр.:
    4 мар 2012
    Сообщения:
    572
    Симпатии:
    312
    <b>Notice</b>: Undefined variable: resul ?
     
  9. Q_BASIC

    Q_BASIC

    Регистр.:
    30 ноя 2013
    Сообщения:
    352
    Симпатии:
    223
    <? foreach($resul as $row) : ?>

    $resul - лучше $result, если $resul.

    А так может переменная другая вообще, в какой переменной результат из БД?
     
  10. Amazko

    Amazko #АдминОтпиши

    Moderator
    Регистр.:
    4 мар 2012
    Сообщения:
    572
    Симпатии:
    312
    <?php echo $rvgmap; ?>