actualisation de la carte de google, javascript, ajax

Je suis en train de faire deux html5/javascript apps avec phonegap pour android, et je les ai à la fois la communication par le biais de php avec ajax, dans les deux d'entre eux, je suis l'aide de l'api google maps, et j'ai besoin de savoir dans deux d'entre eux où l'autre personne, alors que l'on est en mouvement et un autre est en attente pour lui, alors j'ai 2 questions:

  1. Dans app1(celui qui est en mouvement), j'ai besoin de rafraîchir le marqueur toutes les 10 secondes sur la carte, sans charger la page entière.
  2. Je suis de chargement grâce à ajax, les coordonnées sont enregistrées dans la base de données mysql pour les deux applications, j'ai donc besoin de définir un deuxième marqueur dans chaque carte, comme les autres applications de localisation, et de suivre les mouvements de toutes les 10 secondes.

C'est la façon dont je suis le chargement de la carte à chaque application:

  function getPos() {
         navigator.geolocation.getCurrentPosition(onSuccess, onError, {enableHighAccuracy:true});
         setTimeout(getPos, 10000); //call function after 10 seconds
 }

 function onSuccess(position) {
    lat = position.coords.latitude;
    lon = position.coords.longitude;
    console.log("Found - LAT: ", lat, "LON: ", lon);

    var currentposition = new google.maps.LatLng(lat,lon);
    var mapoptions = {
        zoom: 16,
        center: currentposition,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        icon: image
    };
    var map = new google.maps.Map(document.getElementById("map"), mapoptions);
    var marker = new google.maps.Marker({
        position: currentposition,
        map: map
    });
    save_position_in_bd();
}

function onError(error) {
   console.log('code: '    + error.code, 'message: ' + error.message);
}

Et j'en suis l'emplacement de l'autre application avec ajax POST:

$.ajax({ 
   type: "POST", 
   url: "http://localhost/call.php", 
   data: "name=rui",
   dataType: 'json',
   success: function(data){
     lat = data.lat;//get other apps lat
     lon = data.lon;//get other apps lon
   },
   error: function(jqXHR, textStatus, errorThrown ){
         console.log("POST: ", jqXHR, textStatus, errorThrown);
   }
 });

Que puis-je faire pour résoudre mon problème? J'ai essayé d'actualiser la carte dans les différentes fonctions, et j'ai essayé de charger uniquement le marqueur, mais il ne fonctionne pas.
L'api que j'utilise est:

http://maps.googleapis.com/maps/api/js?sensor=false 

RÉSOLU:
La réponse est de séparer le code dans différentes fonctions et de les appeler seulement le marqueur, afin de le mettre à jour:

function getPos() {//initial function to read the position
estado = "livre";
navigator.geolocation.getCurrentPosition(onSuccess, onError, {enableHighAccuracy:true});
setTimeout(keep_alive, 10000); //read every 10 seconds
}
function onSuccess(position) {//read map and mark it in the map
lat = position.coords.latitude;
lon = position.coords.longitude;
console.log("Found - LAT: ", lat, "LON: ", lon);
var image = '/img/taxi_green.png';
var mapoptions = {
zoom: 16,
center: new google.maps.LatLng(lat,lon),
mapTypeId: google.maps.MapTypeId.ROADMAP,
icon: image
};
map = new google.maps.Map(document.getElementById("map"), mapoptions);
marker = new google.maps.Marker({
position: new google.maps.LatLng(lat,lon),
map: map
});
save_position();
}
function keep_alive() {//read position and mark it in the map
navigator.geolocation.getCurrentPosition(onRefresh, onError, {enableHighAccuracy:true});
save_position();
setTimeout(keep_alive, 10000); //read every 10 seconds   
}
//refresh only the marker
function onRefresh(position) {
lat = position.coords.latitude;
lon = position.coords.longitude;
console.log("Found - LAT: ", lat, "LON: ", lon);
marker.setPosition(new google.maps.LatLng(lat, lon));//refresh marker
map.setCenter(new google.maps.LatLng(lat, lon));//resfresh center of the map
}
function trace_client() {//mark clients position in the map
//clientMarker.setPosition(new google.maps.LatLng(client_lat, client_lon));
clientMarker = new google.maps.Marker({
position: new google.maps.LatLng(client_lat,client_lon),
map: map
});
console.log("client marked in the map");
}
function onError(error) {
console.log('code: '    + error.code, 'message: ' + error.message);
}
Vous y êtes presque. Ce qui se passe? Ce n'est pas le cas?
la page était en train de recharger à chaque fois que j'ai mis à jour la carte, je l'ai résolu maintenant, j'ai fait le code dans des fonctions différentes et un pour la mise à jour seule la marque, et ça fonctionne. Merci pour la réponse
Heureux d'entendre que vous l'avez obtenu de travail. Vous devez le présenter comme une réponse, de sorte qu'il peut aider d'autres personnes dans le futur.

OriginalL'auteur rmalta | 2013-07-04