Итак, я создал карту Google на своем веб-сайте с функциями, которые динамически извлекают данные из файла JSON, а затем создают маркеры на карте в зависимости от полученных данных.

Следуя официальному руководству Google по Google Maps: Работа с объектами JSON, все работает нормально, кроме есть небольшая проблема: на карте отображается не более 21 маркера при наличии не менее 1600 записей. Результирующие маркеры всегда одинаковы, однако у них есть правильные данные (маркеры находятся в правильном положении с правильными заголовками для информационного окна) Вот фрагмент соответствующего кода:

for (var x in dataForm4) {
            var data = dataForm4[x];
            var latLng = new google.maps.LatLng(data.lat, data.lng);
            addMarker (map, data.address, latLng);
     };
  }      //This is where the "initiliaze map" function ends

var infoWindow;
  function addMarker (map, address, latLng){
    var marker = new google.maps.Marker({
      position: latLng,
      map: map,
    });

  google.maps.event.addListener(marker, 'click', function() {
    if (typeof infoWindow != 'undefined') infoWindow.close();
    infoWindow = new google.maps.InfoWindow ({
    content: address
  });

    infoWindow.open(map, marker);
  });
}

Примечания к коду:

  • dataForm4 - это строковая переменная файла JSON:

    <script>
      var dataForm4 = <%- JSON.stringify(form2) %>;
    </script>
    
  • адрес - это "заголовок" каждого адреса, находящегося внутри файла JSON, для использования в информационном окне.

  • переменная карты определяется внутри функции инициализации

У меня также есть функция, при которой данные, введенные в базу данных, автоматически вводятся в файл JSON, но это, вероятно, не имеет значения.

К сожалению, кластеризация маркеров - это не вариант. Я пробовал использовать функции setTimeout () и setInterval (), но не смог заставить их правильно работать с моей картой, так как я новичок. Для справки я использую бесплатную версию Google Map API.

0
Porturan 1 Авг 2017 в 17:30
2
Черт возьми, неудивительно, что «объекты JSON» вызывают все большую досаду, если даже Google их научит ...
 – 
Teemu
1 Авг 2017 в 17:32
Моя первая идея: есть ошибка в данных, возможно, специальные символы мешают функции. И тогда функция просто останавливается. Наверное, адрес. Посмотрите, что произойдет, если вы попробуете это: addMarker (map, 'Hello', latLng)
 – 
Emmanuel Delay
1 Авг 2017 в 18:04

1 ответ

Лучший ответ

Вау, после сравнения баз данных, похоже, кто-то ввел некоторые данные вручную, переменная "lat" внутри файла была введена как "lat". Из-за пробела в конце Google не мог определить широту адресов. Мы исправили это ранее, но ответственное лицо забыло изменить данные, которые были введены вручную. Значит, причиной ошибки была неправильная переменная.

0
Porturan 2 Авг 2017 в 10:59