Reputation: 11
I need help with the JSON array created by PHP. This is the example code
[{"flightnum":"IV7050","deptime":"2016-06-01 16:47:00","arrtime":"17:01:39","gs":"397","alt":"26955","lat":"41.340347359635","lng":"-72.46185414378","phasedetail":"Climbing","timeremaining":"07:45:00","online":"No","depicao":"KJFK","arricao":"LFPO","heading":"68","distremain":"3080","aircraftname":"B747-400",
"zone":**--THIS-->"<--THIS--**[{"Latitude":34.647995,"Longitude":-86.738549}]**--THIS-->"<--THIS--**,
"code":"IV","pilotid":"IV0018","firstname":"Mattia","lastname":"test","deplat":"40.6398","deplng":"-73.7789","arrlat":"48.7253","arrlng":"2.35944","route_details":[],"percomplete":2.32,"distremaining":"3080","pilotname":"Mattia"}]
I have added a field called "zone" but how do I remove the double quotes marked only for this field ?
Upvotes: 0
Views: 266
Reputation: 11
thanks to all for your answer, i have solved the problem by using json_decode before insert data in array. but now a have another question,
how can add a liverefresh for polyline on this code?
I already have a liverefresh function, but for the polyline don't work
var flightMarkers = [];
var routeMarkers = [];
var flightPath = null;
var depMarker = null, arrMarker = null;
var info_window= null;
var run_once = false;
var mapOptions = {
zoom: 4,
center: new google.maps.LatLng(47.437047,19.248515),
mapTypeId: google.maps.MapTypeId.ROADMAP };
var map = new google.maps.Map(document.getElementById("acarsmap"), mapOptions);
var weatherLayer = new google.maps.weather.WeatherLayer({ temperatureUnits: google.maps.weather.TemperatureUnit.CELSIUS }); weatherLayer.setMap(null);
var cloudLayer = new google.maps.weather.CloudLayer(); cloudLayer.setMap(null)
setWindSpeed(google.maps.weather.WindSpeedUnit.KILOMETERS_PER_HOUR)
var defaultOptions = {
autozoom: true,
refreshTime: 5000,
autorefresh: true
};
function toggleClouds() {
cloudLayer.setMap(cloudLayer.getMap() ? null : map);
}
function toggleIcons() {
weatherLayer.setMap(weatherLayer.getMap() ? null : map);
}
function setWindSpeed(units) {
weatherLayer.setOptions({'windSpeedUnits': units});
}
var options = $.extend({}, defaultOptions, acars_map_defaults);
// They clicked the map
google.maps.event.addListener(map, 'click', function()
{
clearPreviousMarkers();
});
liveRefresh();
if(options.autorefresh == true)
{
setInterval(function () { liveRefresh(); }, options.refreshTime);
}
function liveRefresh()
{
$.ajax({
type: "GET",
url: url + "/action.php/acars/data_test",
dataType: "json",
cache: false,
success: function(data)
{
populateMap(data);
}
});
};
function populateMap(data)
{
clearMap();
$("#pilotlist").html("");
if (data.length == 0) {
return false;
}
var lat, lng;
var details, row, pilotlink;
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < data.length; i++)
{
if(data[i] == null || data[i].lat == null || data[i].lng == null
|| data[i].lat == "" || data[i].lng == "") {
continue;
}
lat = data[i].lat;
lng = data[i].lng;
if(i%2 == 0)
data[i].trclass = "even";
else
data[i].trclass = "odd";
// Pull ze templates!
var map_row = tmpl("acars_map_row", {flight: data[i]});
var detailed_bubble = tmpl("acars_map_bubble", {flight: data[i]});
$('#pilotlist').append(map_row);
var pos = new google.maps.LatLng(lat, lng);
var image = new google.maps.MarkerImage(url+"/lib/images/inair/"+data[i].heading+".png",
new google.maps.Size(41,41),
new google.maps.Point(0, 0),
new google.maps.Point(20, 20)
);
flightMarkers[flightMarkers.length] = new google.maps.Marker({
position: pos,
map: map,
icon: image,
flightdetails: data[i],
infowindow_content: detailed_bubble
});
bounds.extend(pos);
google.maps.event.addListener(flightMarkers[flightMarkers.length - 1], 'click', function()
{
var focus_bounds = new google.maps.LatLngBounds();
// Flight details info window
info_window = new google.maps.InfoWindow({
content: this.infowindow_content,
position: this.position
});
info_window.open(map, this);
var dep_location = new google.maps.LatLng(this.flightdetails.deplat, this.flightdetails.deplng);
var arr_location = new google.maps.LatLng(this.flightdetails.arrlat, this.flightdetails.arrlng);
depMarker = new google.maps.Marker({
position: dep_location,
map: map,
icon: depicon,
title: this.flightdetails.depname,
zIndex: 100
});
arrMarker = new google.maps.Marker({
position: arr_location,
map: map,
icon: arricon,
title: this.flightdetails.arrname,
zIndex: 100
});
focus_bounds.extend(this.position);
var something = [];
$.each( this.flightdetails.puntirotta, function( key, val ) {
something.push(new google.maps.LatLng(val.Latitude, val.Longitude));
});
//THIS IS THE POLYLINE I WOULD ADD TO LIVE REFRESH
flightPath = new google.maps.Polyline({
path: something,
strokeColor: "#FF0000",
geodesic : true,
strokeOpacity: 1.0,
strokeWeight: 2
});
map.fitBounds(focus_bounds);
flightPath.setMap(map);
});
}
// If they selected autozoom, only do the zoom first time
if(options.autozoom == true && run_once == false)
{
map.fitBounds(bounds);
run_once = true;
}
}
function clearPreviousMarkers()
{
if(info_window)
{
info_window.close();
info_window = null;
}
if(depMarker != null)
{
depMarker.setMap(null);
depMarker = null;
}
if(arrMarker != null)
{
arrMarker.setMap(null);
arrMarker = null;
}
if(routeMarkers.length > 0)
{
for(var i = 0; i < routeMarkers.length; i++) {
routeMarkers[i].setMap(null);
}
}
routeMarkers.length = 0;
if(flightPath != null)
{
flightPath.setMap(null);
flightPath = null;
}
}
function clearMap()
{
if(flightMarkers.length > 0)
{
for(var i = 0; i < flightMarkers.length; i++) {
flightMarkers[i].setMap(null);
}
}
flightMarkers.length = 0;
if(routeMarkers.length > 0)
{
for(var i = 0; i < routeMarkers.length; i++) {
routeMarkers[i].setMap(null);
}
}
routeMarkers.length = 0;
}
Upvotes: 1
Reputation: 7617
Using preg_replace, you could just remove the extra quotes but that is not really a solution. Yes; it will help but the issue is to find out why you have those Quotes in your string. So, the code below solves this issue; temporarily:
<?php
$json = '[
{"flightnum":"IV7050","deptime":"2016-06-01 16:47:00","arrtime":"17:01:39","gs":"397","alt":"26955","lat":"41.340347359635",
"lng":"-72.46185414378","phasedetail":"Climbing","timeremaining":"07:45:00","online":"No","depicao":"KJFK","arricao":"LFPO","heading":"68",
"distremain":"3080","aircraftname":"B747-400",
"zone":"[{"Latitude":34.647995,"Longitude":-86.738549}]",
"code":"IV","pilotid":"IV0018","firstname":"Mattia","lastname":"test","deplat":"40.6398",
"deplng":"-73.7789","arrlat":"48.7253","arrlng":"2.35944","route_details":[],
"percomplete":2.32,"distremaining":"3080","pilotname":"Mattia"}
]';
$json = preg_replace("#(\")(\[\{)(.*)(\}\])(\")#", "$2$3$4", $json);
var_dump(json_decode($json));
OUTPUT OF THE VAR DUMP
array (size=1)
0 =>
object(stdClass)[1]
public 'flightnum' => string 'IV7050' (length=6)
public 'deptime' => string '2016-06-01 16:47:00' (length=19)
public 'arrtime' => string '17:01:39' (length=8)
public 'gs' => string '397' (length=3)
public 'alt' => string '26955' (length=5)
public 'lat' => string '41.340347359635' (length=15)
public 'lng' => string '-72.46185414378' (length=15)
public 'phasedetail' => string 'Climbing' (length=8)
public 'timeremaining' => string '07:45:00' (length=8)
public 'online' => string 'No' (length=2)
public 'depicao' => string 'KJFK' (length=4)
public 'arricao' => string 'LFPO' (length=4)
public 'heading' => string '68' (length=2)
public 'distremain' => string '3080' (length=4)
public 'aircraftname' => string 'B747-400' (length=8)
public 'zone' =>
array (size=1)
0 =>
object(stdClass)[2]
...
public 'code' => string 'IV' (length=2)
public 'pilotid' => string 'IV0018' (length=6)
public 'firstname' => string 'Mattia' (length=6)
public 'lastname' => string 'test' (length=4)
public 'deplat' => string '40.6398' (length=7)
public 'deplng' => string '-73.7789' (length=8)
public 'arrlat' => string '48.7253' (length=7)
public 'arrlng' => string '2.35944' (length=7)
public 'route_details' =>
array (size=0)
empty
public 'percomplete' => float 2.32
public 'distremaining' => string '3080' (length=4)
public 'pilotname' => string 'Mattia' (length=6)
Upvotes: 0