Итак, я настроил свою пожарную базу для связи с моим веб-приложением, использующим API Google Maps, и моя цель заключается в следующем: когда пользователь рисует фигуру на карте (многоугольник, линия), я хочу отправить значение geoJson как он передается в базу данных Firebase (в настоящее время отправляет его в виде строки), а затем возвращает его обратно, чтобы он отображался на карте для всех (поскольку он синхронизируется из базы данных Firebase). Моя проблема заключается в том, что, когда я пытаюсь получить данные geoJson и добавить их на карты Google, в строке map.data.addGeoJson(geoJsonString);
(geoJsonString = значение geoJson, которое хранится в firebase), я получаю сообщение об ошибке:
Uncaught Jb {сообщение: «не Feature или FeatureCollection», имя: «InvalidValueError», стек: «Ошибка» на новом Jb (https://maps.googleapis.com/m…tatic.com/firebasejs/4.13.0/firebase.js:1:278304)"}
По какой-то причине API Google Maps не принимает значение geoJson, даже если console.log(geoJsonString);
возвращает действительное значение geoJson (проверено на http://geojsonlint.com/)
Теперь странная часть заключается в том, что если я пытаюсь импортировать одно и то же значение geoJson вручную (сохраняя значение geoJson в переменной, а затем map.data.addGeoJson(geoJsonString);
), это работает просто отлично.
Эта функция синхронизирует firebase с веб-приложением
function gotData(data){
paths = data.val();
if(paths == null){
console.log("firebase null");
alert('Database is empty! Try adding some paths.');
}
else{
var keys = Object.keys(paths);
for(var i = 0; i < keys.length; i++){
var k = keys[i];
var geoJsonString = paths[k].geoJsonString;
console.log(geoJsonString);
map.data.addGeoJson(geoJsonString);
}
}
}
Эта функция обновляет и помещает данные в базу данных
function updateData(){
data = {
geoJsonString: geoJsonOutput.value
}
ref = database.ref('firebasePaths');
ref.push(data);
}
В этой функции (которая используется для локального хранения значений geoJson в файле) я вызываю функцию updateData) после того, как на карте нарисован новый путь
// Refresh different components from other components.
function refreshGeoJsonFromData() {
map.data.toGeoJson(function(geoJson) {
geoJsonOutput.value = JSON.stringify(geoJson);
updateData();
refreshDownloadLinkFromGeoJson();
});
}
Пример моей базы огня, содержащей 2 случайных геоДжона
Я не могу проследить, где проблема. Есть идеи?