document.write("<script src='http://maps.google.com/maps?file=api&v=2&key=ABQIAAAAC4NMkD3OYIQdPL927iDqCBT9bux_xGfyV12OBoFbhvTIqz2NMRQL9qeqR6gHeekVBXe62GpjpBkopg'></script>");
document.write("<script src='http://api.maps.yahoo.com/ajaxymap?v=3.0&appid=euzuro-openlayers'></script>");
document.write("<script src='http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.1'></script>");
var map, lon, lat, zom, markers, icon, iconpast, state, past, center, vehicles, livetimer, tvalue, areas, routes, pastroutes, wkt;
lon = 35;
lat = 39.5;
zom = 6;
state = true; // default icon mode
past = false;
center = false;
tvalue = 5000;
function InitMap() {
OpenLayers.ImgPath = "Scripts/OpenLayers/theme/dark/";
var mapoptions = {
projection: new OpenLayers.Projection("EPSG:900913"),
displayProjection: new OpenLayers.Projection("EPSG:4326"),
units: "m",
numZoomLevels: 21,
maxResolution: 156543.0339,
maxExtent: new OpenLayers.Bounds(-20037508, -20037508, 20037508, 20037508.34),
transitionEffect: 'resize',
controls: [
new OpenLayers.Control.PanZoomBar(),
new OpenLayers.Control.Navigation(),
new OpenLayers.Control.ScaleLine(),
new OpenLayers.Control.MousePosition(),
new OpenLayers.Control.LayerSwitcher(),
new OpenLayers.Control.KeyboardDefaults()
]
};
map = new OpenLayers.Map('map', mapoptions);
//var layerGoogle = new OpenLayers.Layer.Google("Google Harita", { 'sphericalMercator': true, numZoomLevels: 21 });
//var layerGoogle2 = new OpenLayers.Layer.Google("Google Uydu", { type: G_HYBRID_MAP, 'sphericalMercator': true, numZoomLevels: 21 });
var layerYahoo = new OpenLayers.Layer.Yahoo("Yahoo Harita", { 'sphericalMercator': true, numZoomLevels: 21 });
var layerYahoo2 = new OpenLayers.Layer.Yahoo("Yahoo Uydu", { 'type': YAHOO_MAP_HYB, 'sphericalMercator': true, numZoomLevels: 21 });
var layerVirtual = new OpenLayers.Layer.VirtualEarth("Virtual Harita", { 'type': VEMapStyle.Road, 'sphericalMercator': true, numZoomLevels: 20 });
var layerVirtual2 = new OpenLayers.Layer.VirtualEarth("Virtual Uydu", { 'type': VEMapStyle.Hybrid, 'sphericalMercator': true, numZoomLevels: 20 });
areas = new OpenLayers.Layer.Vector("Bölgeler");
areas.style = { fillColor: '#0000ff', fillOpacity: 0.1, strokeColor: '#0000ff', strokeOpacity: 0.7, strokeDashstyle: 'dash' };
routes = new OpenLayers.Layer.Vector("Rotalar");
routes.style = { strokeColor: '#0000ff', strokeOpacity: 0.7, strokeWidth: 3 };
map.addLayers([/*layerGoogle, layerGoogle2, */layerVirtual, layerVirtual2, layerYahoo, layerYahoo2, routes, areas]);
map.setCenter(clonlat(lon, lat), zom);
wkt = new OpenLayers.Format.WKT({
'internalProjection': new OpenLayers.Projection("EPSG:900913"),
'externalProjection': new OpenLayers.Projection("EPSG:4326")
});
vehicles = new Array();
setIcons();
setDateEdits();
writeInfo(-1, -1, -1);
}
function clonlat(lon, lat) {
return new OpenLayers.LonLat(lon, lat).
transform(
new OpenLayers.Projection("EPSG:4326"),
new OpenLayers.Projection("EPSG:900913")
);
}
function setIcons() {
var size = new OpenLayers.Size(24, 24);
var calculateOffset = function (size) { return new OpenLayers.Pixel(-(size.w / 2), -(size.h / 2)); };
icon = new OpenLayers.Icon('Images/Markers/', size, null, calculateOffset);
size = new OpenLayers.Size(20, 34);
calculateOffset = function (size) { return new OpenLayers.Pixel(-(size.w / 2), -(size.h)); };
iconpast = new OpenLayers.Icon('Images/Markers/default.png', size, null, calculateOffset);
}
function getIcon(st, dir, im) {
var ico = icon.clone();
if (state) {
ico.url = ico.url + st + '/' + dir + '.png';
}
else {
if (past) {
ico = iconpast.clone();
im = im + '';
var div1 = "<div style=\"background-image:url('Images/Markers/" + im + "'); width:20px; height:34px; text-align:center; color:white; font-size:11px; font-weight:bold\">";
var div2 = "</div>";
ico.imageDiv.innerHTML = div1 + dir + div2;
}
else
ico.url = ico.url + im;
}
return ico;
}
function getIconUrl(st, dir, im) {
var icourl = 'Images/Markers/';
if (state)
icourl += st + '/' + dir + '.png';
else
icourl += im;
return icourl;
}
function updateIcon(b) {
state = b;
if (past) {
var p;
for (var i = 0; i < vehicles.length; i++) {
var vehicle = vehicles[i];
if (state) { p = vehicle.dir; }
else { p = vehicle.vid; }
markers.removeMarker(vehicle.marker);
var ll = vehicle.marker.lonlat;
var marker = new OpenLayers.Marker(ll, getIcon(vehicle.st, p, vehicle.im));
marker.id = vehicle.vid;
marker.events.register('click', marker, function () { showPopup(this.id, this.lonlat); });
markers.addMarker(marker);
marker.icon.imageDiv.style.cursor = 'pointer';
vehicle.marker = marker;
}
}
else
for (var i = 0; i < vehicles.length; i++) {
vehicles[i].marker.icon.url = getIconUrl(vehicles[i].st, vehicles[i].dir, vehicles[i].im);
vehicles[i].marker.draw();
}
}
function updateCenter(b) {
center = b;
mapSetCenter();
}
function addVehicleMarker(data) {
past = false;
removeMarkersAndPopups();
markers = new OpenLayers.Layer.Markers("Araçlar");
map.addLayer(markers);
var warcount = 0;
if (data.length > 0) {
for (i = 0; i < data.length; i++) {
var vehicle = data[i];
var marker = new OpenLayers.Marker(clonlat(vehicle.lon, vehicle.lat), getIcon(vehicle.st, vehicle.dir, vehicle.im));
marker.id = vehicle.vid;
marker.events.register('click', marker, function () { showPopup(this.id, this.lonlat); });
markers.addMarker(marker);
marker.icon.imageDiv.style.cursor = 'pointer';
addVehicle(vehicle, marker);
}
}
mapSetCenter();
return data.length;
}
function addPastMarker(data) {
past = true;
var maxSpeed = 0;
var plt = "";
removeMarkersAndPopups();
markers = new OpenLayers.Layer.Markers("Geçmiş Noktalar");
pastroutes = new OpenLayers.Layer.Vector("Geçmiş Rota");
pastroutes.style = { strokeColor: '#0000ff', strokeOpacity: 0.7, strokeWidth: 3 };
map.addLayer(pastroutes);
map.addLayer(markers);
var p;
var wkttext = "MULTILINESTRING(";
for (i = 0; i < data.length; i++) {
var vehicle = data[i];
wkttext += vehicle.lon + " " + vehicle.lat + ",";
vehicle.im = 'past' + vehicle.st + '.png';
vehicle.vid = i + 1;
if (state) p = vehicle.dir;
else p = vehicle.vid;
var marker = new OpenLayers.Marker(clonlat(vehicle.lon, vehicle.lat), getIcon(vehicle.st, p, vehicle.im));
marker.id = i + 1;
marker.events.register('click', marker, function () { showPopup(this.id, this.lonlat); });
markers.addMarker(marker);
marker.icon.imageDiv.style.cursor = 'pointer';
addVehicle(vehicle, marker);
maxSpeed = maxSpeed > vehicle.spd ? maxSpeed : vehicle.spd;
}
wkttext = wkttext.substring(0, wkttext.length - 1) + ")";
addPastRoutes(wkttext);
if (vehicles[0])
plt = vehicles[0].plt;
writePastInfo(plt, data.length, maxSpeed);
}
function mapSetCenter() {
if (center && markers.markers.length == 1)
map.setCenter(markers.markers[0].lonlat);
}
function showPopup(id, lonlat) {
for (var i = 0; i < map.popups.length; i++) {
if (map.popups[i].id == id)
return;
}
var vehicle = getVehicleByID(id);
var detail = '<div>';
detail = '<b>Id: </b>' + vehicle.vid + '<br/>';
detail += '<b>Plaka: </b>' + vehicle.plt + '<br/>';
detail += '<b>Hız: </b>' + vehicle.spd + '<br/>';
detail += '<b>Durum: </b>' + vehicle.st + '<br/>';
detail += '<b>İmage url: </b>' + vehicle.im + '<br/>';
detail += '<b>Warning : </b>' + vehicle.war + '<br/>';
detail += '<b>Yön: </b>' + vehicle.dir + '<br/>';
detail += '<b>Zaman: </b>' + vehicle.time + '</div>';
var popup = new OpenLayers.Popup.FramedCloud('chicken',
lonlat,
null,
detail,
null, true, function () { removeAtPopup(vehicle.vid) });
popup.id = vehicle.vid;
map.addPopup(popup);
}
function addVehicle(v, m) {
i = vehicles.length;
vehicles[i] = new Object();
vehicles[i].vid = v.vid;
vehicles[i].plt = v.plt;
vehicles[i].spd = v.spd;
vehicles[i].time = v.time;
vehicles[i].dir = v.dir;
vehicles[i].st = v.st;
vehicles[i].war = v.war;
vehicles[i].im = v.im;
vehicles[i].marker = m;
}
function getVehicleByID(id) {
for (var i = 0; i < vehicles.length; i++) {
if (vehicles[i].vid == id) {
return vehicles[i];
break;
}
}
}
function removeAtPopup(vehicleId) {
for (var i = 0; i < map.popups.length; i++) {
if (map.popups[i].id == vehicleId) {
map.removePopup(map.popups[i]);
break;
}
}
}
function removeMarkersAndPopups() {
for (var i = 0; i < map.layers.length; i) {
//alert(map.layers[i].name + past);
if (map.layers[i].name == 'Geçmiş Noktalar')
map.removeLayer(map.layers[i]);
else if (map.layers[i].name == 'Geçmiş Rota')
map.removeLayer(map.layers[i]);
else if (map.layers[i].name == 'Araçlar')
map.removeLayer(map.layers[i]);
else i++;
}
vehicles = new Array();
markers = null;
pastroutes = null;
for (var i = map.popups.length; i > 0; i--) {
map.removePopup(map.popups[i - 1]);
}
}
function updateVehicleMarker(data) {
for (i = 0; i < data.length; i++) {
var vehicle = data[i];
var exVehicle = getVehicleByID(vehicle.vid);
exVehicle.plt = vehicle.plt;
exVehicle.spd = vehicle.spd;
exVehicle.dir = vehicle.dir;
exVehicle.st = vehicle.st;
exVehicle.war = vehicle.war;
exVehicle.im = vehicle.im;
exVehicle.time = vehicle.time;
markers.removeMarker(exVehicle.marker);
var ll = clonlat(vehicle.lon, vehicle.lat);
var marker = new OpenLayers.Marker(ll, getIcon(vehicle.st, vehicle.dir, vehicle.im));
marker.id = vehicle.vid;
marker.events.register('click', marker, function () { showPopup(this.id, this.lonlat); });
markers.addMarker(marker);
marker.icon.imageDiv.style.cursor = 'pointer';
exVehicle.marker = marker;
for (var j = 0; j < map.popups.length; j++) {
if (map.popups[j].id == vehicle.vid) {
map.removePopup(map.popups[j]);
showPopup(vehicle.vid, ll);
break;
}
}
}
mapSetCenter();
return data.length;
}
function addAreas(WKTtext) {
var features = wkt.read(WKTtext);
var bounds;
if (features) {
if (features.constructor != Array) {
features = [features];
}
for (var i = 0; i < features.length; ++i) {
if (!bounds) {
bounds = features[i].geometry.getBounds();
} else {
bounds.extend(features[i].geometry.getBounds());
}
}
areas.addFeatures(features);
map.zoomToExtent(bounds);
}
}
function removeAreasFeatures() {
areas.removeAllFeatures();
}
function addRoutes(WKTtext) {
var features = wkt.read(WKTtext);
var bounds;
if (features) {
if (features.constructor != Array) {
features = [features];
}
for (var i = 0; i < features.length; ++i) {
if (!bounds) {
bounds = features[i].geometry.getBounds();
} else {
bounds.extend(features[i].geometry.getBounds());
}
}
routes.addFeatures(features);
map.zoomToExtent(bounds);
}
}
function removeRoutesFeatures() {
routes.removeAllFeatures();
}
function addPastRoutes(WKTtext) {
var features = wkt.read(WKTtext);
var bounds;
if (features) {
if (features.constructor != Array) {
features = [features];
}
for (var i = 0; i < features.length; ++i) {
if (!bounds) {
bounds = features[i].geometry.getBounds();
} else {
bounds.extend(features[i].geometry.getBounds());
}
}
pastroutes.addFeatures(features);
map.zoomToExtent(bounds);
}
}
//function getTileURL(bounds) {
// var res = this.map.getResolution();
// var x = Math.round((bounds.left - this.maxExtent.left) / (res * this.tileSize.w));
// var y = Math.round((this.maxExtent.top - bounds.top) / (res * this.tileSize.h));
// var z = this.map.getZoom();
// var limit = Math.pow(2, z);
//
// if (y < 0 || y >= limit) {
// return OpenLayers.Util.getImagesLocation() + "404.png";
// } else {
// x = ((x % limit) + limit) % limit;
// return this.url + z + "/" + x + "/" + y + "." + this.type;
// }
//}