あなたの答えのためのすべてのおかげで、私は、配列の挿入データの前json_decodeを使用して問題を解決しました。
このコードでポリラインのライブリフレッシュを追加するにはどうすればよいですか?
は、私はすでにliverefresh機能を持っていますが、ポリラインのため
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;
}
私は(例えば 'json_encode()')は、PHPを疑う働くことを作成しないでください。それは違法/無効なjsonです。 JSONを手動で構築していなければなりません。つまり、jsonを構築するコードを修正し、作成したゴミを修正/修正しないようにする必要があります。 –
このJSON文字列はどのように生成されますか? – Ben
値を追加する前に '[{Latitude":34.647995、 "Longitude": - 86.738549}] 'に' json_decode'を使用してから 'json_encode'を使用してください – JustOnUnderMillions