title: Update Marker Position Google Maps V3
body: <p>I am quite a novice with javascript stuff and am currently faking it till i make it lol and now ive come across a small hill that i'm struggling to get over :S.</p>
  
  <p>Currently my script finds the users location and adds a pin to the map while copying LatLon to some form fields.</p>
  
  <p>In addition to just zooming in on the users location i would like them to have the ability to add a custom address which is entered into a text field, geocoded and then updates the current pin on the map.</p>
  
  <p>This all works, although it adds an additional pin to the map rather than updating the current pin.</p>
  
  <p>I am unsure how to pass the value from the address geocoding function back into the original pin / or do i delete the original pin and add a new pin. I'm sure i can reuse some functions as well... i don't think my code is terribly efficient :/</p>
  
  <p>Any way i hope a guru out there can help me out </p>
  
  <p>Cheers
  Nick</p>
  
  <pre><code> 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: '&lt;b&gt;&lt;?php _e('Latitude:');?&gt;&lt;/b&gt;' + lat + '&lt;br&gt;&lt;b&gt;&lt;?php _e('Longitude:');?&gt;&lt;/b&gt;' + 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);
        }
      });
  
  }
  </code></pre>