Mettre à jour la position du marqueur Google Maps V3

Je suis assez novice en javascript trucs et suis actuellement en train de faire semblant jusqu'à ce que je le faire lol et maintenant, ive viennent à travers une petite colline qui je me bats pour obtenir plus de :S.

Actuellement mon script détecte la position et ajoute une broche de la carte lors de la copie de LatLon à certains champs du formulaire.

En plus juste de zoomer sur la position je voudrais avoir la possibilité d'ajouter une adresse personnalisée qui est entré dans un champ de texte, géocodées, puis met à jour le code pin actuel sur la carte.

Tout cela fonctionne, bien qu'il ajoute une broche supplémentaire à la carte plutôt que de mettre à jour le mot de passe actuel.

Je ne suis pas sûr de savoir comment passer de la valeur de l'adresse de géocodage fonction de retour dans l'axe d'origine /ou dois-je supprimer l'axe d'origine et ajouter un nouveau code pin. Je suis sûr que je peux réutiliser certaines fonctions ainsi... je ne pense pas que mon code est terriblement efficace :/

Toute façon, je l'espère, un gourou peut m'aider

Cheers
Nick

 var geocoder;
var map;
var pos;
function initialize() {
geocoder = new google.maps.Geocoder();
var newyork = new google.maps.LatLng(40.69847032728747, -73.9514422416687);
var address = document.getElementById("address").value;
var initialLocation;
var myOptions = {
zoom: 12,
center: initialLocation,
mapTypeId: google.maps.MapTypeId.TERRAIN
}
//Try HTML5 geolocation
if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var pos = new google.maps.LatLng(position.coords.latitude,
position.coords.longitude);
var marker = new google.maps.Marker({
map: map,
position: pos,
title: 'Location found using HTML5.',
draggable: true
});
var lat = position.coords.latitude
var lng = position.coords.longitude
document.getElementById('geo_latitude').value=lat;
document.getElementById('geo_longitude').value=lng;
google.maps.event.addListener(marker, "dragend", function(event) {
var lat = event.latLng.lat()
var lng = event.latLng.lng()
var infowindow = new google.maps.InfoWindow({
content: '<b><?php _e('Latitude:');?></b>' + lat + '<br><b><?php _e('Longitude:');?></b>' + lng
});
infowindow.open(map, marker);
google.maps.event.addListener(marker, "dragstart", function() {
infowindow.close();
});
document.getElementById('geo_latitude').value=lat;
document.getElementById('geo_longitude').value=lng;
});
map.setCenter(pos);
}, function() {
handleNoGeolocation(true);
});
} else if (google.gears) {
browserSupportFlag = true;
var geo = google.gears.factory.create('beta.geolocation');
geo.getCurrentPosition(function(position) {
initialLocation = new google.maps.LatLng(position.latitude,position.longitude);
map.setCenter(initialLocation);
}, function() {
handleNoGeoLocation(browserSupportFlag);
});
//Browser doesn't support Geolocation
} else {
browserSupportFlag = false;
handleNoGeolocation(browserSupportFlag);
}
function handleNoGeolocation(errorFlag) {
if (errorFlag == true) {
alert("Geolocation service failed.");
initialLocation = newyork;
} else {
alert("Your browser doesn't support geolocation. We've placed you in New York.");
initialLocation = newyork;
}
map.setCenter(initialLocation);
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
//-------------------------------------------------------End initialize
function findAddress(address) {
var address = document.getElementById("address").value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var pos = results[0].geometry.location;
} else {
alert("Geocode was not successful for the following reason: " +   status);
}
});
}

source d'informationauteur user1095118