Dank allen für Ihre Antwort, habe ich das Problem gelöst durch die Verwendung json_decode vor dem Einsetzen Daten in Array. aber jetzt eine andere Frage haben,
Wie kann ein LiveRefresh für Polyline auf diesen Code hinzufügen?
Ich habe bereits eine liverefresh Funktion, sondern auch für die Polylinie nicht funktionieren
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;
}
Ich bezweifle, PHP (z 'json_encode()') erstellt, dass. Es ist illegal/ungültig json. Sie müssen den JSON manuell erstellt haben, was bedeutet, dass Sie den Code reparieren sollten, der den JSON erstellt, und nicht versuchen, den von ihm erzeugten Müll zu korrigieren. –
Wie wird diese JSON-Zeichenfolge generiert? – Ben
Verwenden Sie 'json_decode' auf' [{"Latitude": 34.647995, "Longitude": - 86.738549}] 'bevor Sie den Wert hinzufügen, verwenden Sie' json_encode' – JustOnUnderMillions