我正在尝试开发一个Web应用程序,允许用户在地图上发布笔记(标记)以供其他人阅读。它基本上是在地图上放置由主题和消息组成的标记。点击地图上的标记可以访问它。
目前我正面临从Firebase检索数据的问题。我设法让应用程序将数据发送到Firebase(地图上标记位置的纬度和经度,以及主题本身的消息),但我无法取回信息以便在精确坐标上放置标记。
我遵循了许多YouTube教程和在线指南,但除了Chrome中的控制台外,Firebase数据不会显示在任何地方。
有什么问题可能是什么问题?我正在为他的地图和Firebase发布JavaScript,以便您可以看到我如何将消息,主题,纬度和经度保存到Firebase数据库。
由于
firebase.initializeApp(config);
var note = firebase.database().ref("note");
/*map*/
window.onload = getLocation;
var geo = navigator.geolocation;
function getLocation() {
if (geo) {
geo.watchPosition(displayLocation);
}
else {
alert("opps, geolocation API is not supported ");
}
}
function displayLocation(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
/*diaplays coordinates in the footer of the webapp*/
var div = document.getElementById( 'location' );
longText = document.getElementById("longitude")
if (latitude == latitude)
{
div.innerHTML = "X: " + latitude + " Y: " + longitude;
}
}
/*map*/
var map, infoWindow;
function initMap() {
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: -34.397, lng: 150.644},
zoom: 6,
disableDefaultUI: true,
});
infoWindow = new google.maps.InfoWindow;
/*gets Navigation, sets the map to current position and posts a marker*/
/*Shouldn't post a marker, code will be removed later when we learn how
to post markers to note locations rather than user locations*/
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = {
lat: position.coords.latitude,
lng: position.coords.longitude,
};
infoWindow.setPosition(pos);
infoWindow.setContent('Location found.');
infoWindow.open(map);
map.setCenter(pos);
})
var marker = new google.maps.Marker
({
position: pos,
map: map
})
}, function() {
handleLocationError(true, infoWindow, map.getCenter());
});
} else {
handleLocationError(false, infoWindow, map.getCenter());
}
}
/*stores Geolocation in local storage to call it later*/
navigator.geolocation.getCurrentPosition(function(p)
{
localStorage.setItem("latitude", p.coords.latitude);
localStorage.setItem("longitude", p.coords.longitude);
}, function(e){console.log(e)})
/*error handler obviously*/
function handleLocationError(browserHasGeolocation, infoWindow, pos) {
infoWindow.setPosition(pos);
infoWindow.setContent(browserHasGeolocation ?
'Error: The Geolocation service failed.' :
'Error: Your browser doesn\'t support geolocation.');
infoWindow.open(map);
}
/*button firebase function*/
var submitNote = function () {
var subject = $("#messageSubject").val();
var message = $("#messageContent").val();
var lat = localStorage.latitude;
var lon = localStorage.longitude;
note.push({
"subject": subject,
"message": message,
"latitude": lat,
"longitude": lon
});
};
$(window).load(function () {
$("#noteForm").submit(submitNote);
});
答案 0 :(得分:1)
从数据库中检索纬度和经度:
firebase.database().ref().child("markers").on('value').then(function(snapshot) {
snapshot.forEach(function(child) {
var childData = child.val();
var latitudes=child.val().latitude;
var longitudes=child.val().longitude;
});
});
假设数据库是这样的:
markers
pushid
subject: subject
message: message
latitude: lat
longitude: lon