0

我正在制作一个网站,我有一个位置列表,我想在这些位置显示所有标记。

这是我的代码:

    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"
}]

4

1 回答 1

0

问题是您访问对象的方式。您需要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,
  });
});
于 2020-05-17T06:03:40.507 回答