Я немного застрял, когда пытался вернуть некоторые координаты из базы данных для API карт Google, чтобы получить многоугольник.
Сначала я получаю свои данные из базы данных, используя Laravel Framework:
MapController -
public function getallmapcoords(request $request)
{
$pd = ParishData::limit(10)->get();
return json_encode($pd);
}
Затем я анализирую все данные и сужаю их до нужных координат.
Аякс -
$.ajax({
type: 'post',
url: '{{route("getallmapcoords")}}',
beforeSend:function(){
$('.loader').append('<div id="progress"><img src="{{asset("img/wheel.gif")}}"><br><span class="loadertext">Loading...</span></div>');
$('#progress').center(); //call the center function, centres the progress div in the
},
success:function(data){
$('.loader').empty();
parsedData = JSON.parse(data);
coords = parsedData[0]['coordinates'];
console.log(coords);
parsedcoords = JSON.parse(coords);
console.log(parsedcoords);
},
error:function(){
// failed request; give feedback to user
},
complete:function(data){
$('.loader').empty();
}
});
Первый файл console.log отображает координаты в виде строки, как показано:
Второй файл console.log выдает следующую ошибку:
Uncaught SyntaxError: Unexpected token l in JSON at position 4
at JSON.parse (<anonymous>)
at Object.success (<anonymous>:170:27)
at fire (eval at <anonymous> (app.js:83), <anonymous>:3268:31)
at Object.fireWith [as resolveWith] (eval at <anonymous> (app.js:83), <anonymous>:3398:7)
at done (eval at <anonymous> (app.js:83), <anonymous>:9305:14)
at XMLHttpRequest.eval (eval at <anonymous> (app.js:83), <anonymous>:9548:9)
После копирования первого console.log (строковая версия) в консоль Google Chrome и присвоения переменной, он возвращает объект в нужном мне формате.
Меня смущает то, что Google Chrome анализирует его нормально, но JSON.Parse не работает?
Пример строки, которую я возвращаю:
https://pastebin.com/c9rq9HqE
Спасибо за любую помощь, которую вы можете оказать, и, если есть и лучший способ сделать это на стороне PHP, я весь в ушах!