[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: динамические маркеры на google maps
oleg_kr
Добрый день! Может кто помочь с решением? чтобы при изменении координат маркера которые берутся из данных файла whazzup.txt маркеры передвигались по карте с интервалом времени на уже загруженной карте? Имеется вот такой код из трех файлов:
1. markers.php

<?php

error_reporting(1);
$a = array(
"EAFS"=>"UUDD Москва"
);
$f = file_get_contents("http://fsxskyway.ru/google/whazzup.txt");
if ($f) {
$f = substr($f,strpos($f,"!CLIENTS")+10);
$f = substr($f,0,strpos($f,"!SERVERS")-1);
$lines = explode("\n",$f);

if (count($lines)) {
foreach ($lines as $l) {
$e = array_map("htmlspecialchars",explode(":",$l));

//Begin Airline List
//FAA ident only eg SW = Skyway
if (strpos($e[0],'RA0073') !==false){
$cs='<img style="float:top" src="http://fsxskyway.ru/google/images/sw.png"/>';}
if (strpos($e[0],'AAL') !==false){
$cs='<img src="http://fsxskyway.ru/google/images/ru.png"/>';}

//End Airline Listing
if (substr($e[0],0,8) == "!SERVERS") {
$o = array("error"=>"Получение данных невозможно, попробуйте позже!");
break;
}

if ($e[3] == "ATC") {
$o["markers"][] = array(
"type"=>"atc",
"callsign"=>$e[0],
"ang"=>"",
"pos"=>array(
"x"=>$e[5],
"y"=>$e[6]
),
"list"=>$e[0],
"desc"=> '<b>Air Traffic Controller</b>'.
'<br />Callsign: '.$e[0].
'<br />Username: '.$e[2].
'<br />Frequency: '.$e[4]

);
} else {

$o["markers"][] = array(
"type"=>"pilot",
"callsign"=>$e[0],
"ang"=>round($e[45],-1)%360,
"pos"=>array(
"x"=>$e[5],
"y"=>$e[6]
),
"list"=>$e[0],
"desc"=> '<b>Pilot</b>'. '<p>'.$cs.'</p>'.
'<br />Callsign: '.$e[0].
'<br />Username: '.$e[2].
'<br />Aircraft: '.$e[9].
'<br />Heading: '.$e[45].
'<br />Altitude: '.(($e[7])?$e[7].' Ft':"On Ground").
'<br />Ground Speed: '.$e[8].' Knots'.
'<br />Departure Airport: '.(($e[11])?$e[11].(($a[$e[11]])?" (".$a[$e[11]].")":""):"Not filled").
'<br />Destination Airport: '.(($e[13])?$e[13].(($a[$e[13]])?" (".$a[$e[13]].")":""):"Not filled").
'<br />Flight Route: '.(($e[30])?$e[30]:"Not filled")
);
}
}
} else {
$o = array("error"=>"Нет подключений.");
}
} else {
$o = array("error"=>"Ошибка получения данных, Попробуйте позже!");
}

echo json_encode($o);
?>


2. скрипт Js.js

function MapLabel(childmarker, label, map) {
this.childmarker = childmarker;
this.label = label;

this.div = null;
this.setMap(map);
}
function initializeLabels() {
MapLabel.prototype = new google.maps.OverlayView();

MapLabel.prototype.onAdd = function() {
var div = document.createElement("div");

div.style.background = "#FFF";
div.style.border = "1px solid #000";
div.style.position = "absolute";
div.style.display = "none";
div.style.fontSize = "x-small";
div.style.padding = "2px";
div.innerHTML = this.label;

this.div = div;

var panes = this.getPanes();
panes.overlayLayer.appendChild(div);
}
MapLabel.prototype.draw = function() {
var p = this.getProjection().fromLatLngToDivPixel(this.childmarker.position);

this.div.style.left = p.x + 15 + 'px';
this.div.style.top = p.y - 40 + 'px';
this.div.style.display = "block";
}
MapLabel.prototype.onRemove = function() {
this.div.parentNode.removeChild(this.div);
this.div = null;
}
}
function initialize() {
mapObj = new google.maps.Map(document.getElementById("mapDiv"), {
zoom: 5,
center: new google.maps.LatLng(55.408790,37.906310),
//mapTypeId: google.maps.MapTypeId.SATELLITE
});

$.getJSON("markers.php",function(data){
if (data == null) {
$("#notice").html("Failed to load markers file.");
} else if (data.error) {
$("#notice").html(data.error);
} else {
$.each(data.markers, function(k, marker) {
//for (var i=0; i<data.markers.length; i++) {
// var marker = data.markers[i];
var mark = new google.maps.Marker({
"position": new google.maps.LatLng(marker.pos.x,marker.pos.y),
"map": mapObj,
"icon": "http://fsxskyway.ru/google/images/"+marker.type+marker.ang+".png"
});
var infowindow = new google.maps.InfoWindow({
"content": marker.desc
});
var label = new MapLabel(mark, marker.callsign, mapObj);

google.maps.event.addListener(mark, "click", function() {
if (infowindow.isopen) {
infowindow.close();
infowindow.isopen = false;
} else {
infowindow.open(mapObj,mark);
infowindow.isopen = true;
}
});
google.maps.event.addListener(infowindow, "closeclick", function() {
infowindow.isopen = false;
});

$("<div />").html(marker.list).click(function() {
mapObj.panTo(mark.position);
}).appendTo($("#clients").children("#"+marker.type));
//}
});
$("#notice").css({"black": "100%", "font-weight": "bold"}).html("<marquee>Кликните по самолету для получения информации | Click on Andras Field to view aircrafts in the area</marquee>");
}
$("img").hide();
});
}

$(function() {
initializeLabels();
initialize();
});


3. php страница

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=uwindows-1251" />
<title>Map</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=true"></script>
<script src="http://code.jquery.com/jquery-latest.min.js"></script>
<script type="text/javascript" src="http://fsxskyway.ru/google/js/js.js"></script>
<script type="php" src="fsxskyway.ru/google/markers.php"></script>
<style type="text/css">
body,html,#mapDiv {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
font-family: Verdana, Arial;
font-size: small;
}
a {
color: #F00;
}
img,#notice {
position: absolute;
right: 3px;
bottom: 15px;
font-size: x-small;
color: #FFF;
}
#clients {
position: absolute;
left: 2px;
bottom: 2px;
padding: 4px;
background: #FFF;
-moz-border-radius: 3px;
}
#clients div {
cursor: pointer;
}
</style>
</head>
<body>
<div id="mapDiv"></div>
<img src="loading.gif" />
<div id="notice"></div>
<div id="clients">
<div id="atc">
<b>ATCs</b>
</div>
<div id="pilot">
<b>Pilots</b>
</div>
<br /><a href="./">Refresh Map!</a>
<br /><a href="javascript:;" onclick="mapObj.setCenter(new google.maps.LatLng(55.408790,37.906310)); mapObj.setZoom(10)">UUDD Москва</a>
</div>
</body>
</html>
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.