Jump to content

Autorefresh polyline google maps


mattia

Recommended Posts

Hi all,

How can add a liverefresh for polyline on this code? I already have a liverefresh function, but for the polyline don't work. The marker position is updated but the position of the polyline no

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;
}

Edited by mattia
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...