Не отображается несколько маркеров MAP API

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

Вот мой код:

    if (navigator.geolocation) {
          geoLoc = navigator.geolocation;
          var user_list = [];
          watchID = geoLoc.watchPosition(function showLocation(position) {
          var lat = position.coords.latitude;
          var lng = position.coords.longitude;
          var today = new Date();
          var date = today.getFullYear()+'-'+(today.getMonth()+1)+'-'+today.getDate();
          var time = today.getHours() + ":" + today.getMinutes() + ":" + today.getSeconds();
          var dateTime = date+' '+time;
          fStore.collection("User").doc(userID).update({
            latitude: lat,
            longitutde: lng,
            time: dateTime
          })
          fStore.collection("User").get().then(function(querySnapshot) {
            querySnapshot.forEach(function(doc) {
                if (doc.id != userID){
                    // doc.data() is never undefined for query doc snapshots
                    user_list.push(doc.data());
                    console.log(user_list);
                    console.log(user_list.length);
                }
            });

            for (var i = 0; i < user_list.length; i++){
                console.log("can you?");
                createMarker({
                    position: new google.maps.LatLng(user_list[i][2], user_list[i][3]),
                    map: map,
                    title: user_list[i][0]
                  });
                  console.log("drawn?")
            }
        })

    }, errorHandler,  {
        enableHighAccuracy: true,
        timeout: 5000,
        maximumAge: 0
    });
}

Я пытаюсь сделать console.log в коде, чтобы увидеть, работает ли он, и он также возвращает этот журнал консоли, но маркер не отображается.

Это образец записи в списке:

user_list= [{
address: "test"
email: "lalala@gmail.com"
first_name: "test"
last_name: "test"
latitude: 39.9572992
longitutde: -75.2091136
time: "2020-5-16 23:51:6"
userID: "gV2hZe1wf3f9FF00r3apYpKSb743"
}]

1 ответ

Проблема в том, как вы получаете доступ к объекту. Вам нужно dot(.) оператор, чтобы получить доступ к значению из объекта.user_list[i].latitude

for (var i = 0; i < user_list.length; i++) {
  console.log("can you?");
  createMarker({
    position: new google.maps.LatLng(user_list[i].latitude, user_list[i].longitutde), // Here, 
    map: map,
    title: user_list[i].address,
  });
  console.log("drawn?");
}

Вы можете упростить использование forEach:

user_list.forEach((user) => {
  createMarker({
    position: new google.maps.LatLng(user.latitude, user.longitutde),
    map: map,
    title: user.address,
  });
});
Другие вопросы по тегам