Javascript и PHP показывают несколько трекеров в Google Maps API - PullRequest
0 голосов
/ 30 августа 2018

В настоящее время я разрабатываю систему, которая будет выводить всю широту и долготу из MySQLi DB и выводить все данные на странице. Вот мой PHP-код (работает без проблем):

header('Content-Type: text/html; charset=utf-8');
require('database.php');
$query = mysqli_query($mysqli, "SELECT * FROM `tracking`");
if (!$query)
{
   die('Error: ' . mysqli_error($mysqli));
}
if(mysqli_num_rows($query) > 0){
    $getList = array();
    while ($row = mysqli_fetch_assoc($query)) { 
        $getList[] = $row;
    }
    for($i = 0, $l = count($getList); $i < $l; ++$i) {
        echo $getList[$i]['lat'].",".$getList[$i]['lon']."\n";
    }
}

например, вывод: -71.99991299555996,-83.18116602 -22.809918399999997,-43.4211132 -22.8540416,-43.2488448

Теперь мне нужно собрать все данные и поместить их в массив, а также указать целую широту / долготу для маркеров в Картах Google. Проверьте, что я пробовал:

var check = false;
function refreshAll() { // This function will be called every 60 seconds
var locations = [];
locations.length = 0;
$.ajax({
    type: "GET",
    url: "show.php",
    success: function(x)
    {

    var items = x.split("\n");
    for(i=0; i<items.length; i++){
        var data = items[i];
        if ((items[i]).length > 1) {
            locations.push(items[i].trim());
            }
        }

        if (check == false) { // this will avoid map refreshing, I need only markers update.
            var map = new google.maps.Map(document.getElementById('map'), {
            zoom: 2,
            center: new google.maps.LatLng(-33.92, 151.25),
            mapTypeId: google.maps.MapTypeId.ROADMAP
        });
        check = true;
        }

        var infowindow = new google.maps.InfoWindow();

        var marker, i;

        for (i = 0; i < locations.length; i++) {  
            alert(locations[i]);
            marker = new google.maps.Marker({
            position: new google.maps.LatLng(locations[i].trim()),
            map: map
          });
       }
    }
});}

Проблема: маркеры не устанавливаются и не имеют ошибок в консоли. Я работаю над этим в последние два дня и не могу найти никакого решения. Вы можете мне помочь? Спасибо.

Ответы [ 2 ]

0 голосов
/ 30 августа 2018

Как вы можете видеть здесь, в документе , объект LatLng отличается от того, который вы используете. Итак, замените:

marker = new google.maps.Marker({
        position: new google.maps.LatLng(locations[i].trim()),
        map: map
      });

С

locations[i] = locations[i].trim().split(',');
var latLng = {lat: Number(locations[i][0]), lng: Number(locations[i][1])};

marker = new google.maps.Marker({
             position: latLng,
             map: map
         });
0 голосов
/ 30 августа 2018

Проверьте, объект карты находится в вашей переменной infoWindow, попробуйте установить там позиции. Это следует использовать внутри цикла локаций.

var pos = {
   lat: latitude,
   lng: longitude
};

infoWindow.setPosition(pos);
...