user552828
user552828

Reputation: 769

Geocoding the Geolocation gives error on Google Maps

When you click 'Find Me' button, it finds your location, but the problem is with the geocoding part.

It should show your location's address inside the "myaddress" div. But it gives a error that I didn't understand.

<!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=utf-8" />
<title>Untitled Document</title>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=true"></script>
<script type="text/javascript">
function initialize() {
    var latlng = new google.maps.LatLng(0, 0);
    var myOptions = {
      zoom: 1,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var map = new google.maps.Map(document.getElementById("sbmr"),
        myOptions);


}

/////////////////////////////////////////////////////////////////////////////

var initialLocation;
var siberia = new google.maps.LatLng(60, 105);
var browserSupportFlag =  new Boolean();
var myposition;
var geocoder;

function geocode() {

      var myOptions = {
        zoom: 6,
        mapTypeId: google.maps.MapTypeId.ROADMAP
      };

      var map = new google.maps.Map(document.getElementById("sbmr"), myOptions);

  // Try W3C Geolocation (Preferred)
  if(navigator.geolocation) {
    browserSupportFlag = true;
    navigator.geolocation.getCurrentPosition(function(position) {
      initialLocation = new google.maps.LatLng(position.coords.latitude,position.coords.longitude);


      /////////////////PROBLEM IS WITH THIS PART///////////////////
        var latlng = new google.maps.LatLng(initialLocation);
        geocoder = new google.maps.Geocoder();
        geocoder.geocode(latlng, function(results, status) {
          if (status == google.maps.GeocoderStatus.OK) {
            if (results[1])
            document.getElementById("myaddress").innerHTML = 'results[1].formatted_address'
            }
          else {
            alert("Geocoder failed due to: " + status);
          }
          });
      //////////////////////////////////////////////////
      var marker = new google.maps.Marker({
                  position: initialLocation, 
                  map: map, 
                  animation: google.maps.Animation.BOUNCE,
                  title:"You're here."
                  });

      map.setCenter(initialLocation);

      map.setZoom(15);

      //W3C olursa yapilanlar bitis
    }, function() {
      handleNoGeolocation(browserSupportFlag);
    });
  }  
}//geocodefinish
</script>

<style type="text/css">
<!--
#sbmr {
    position:absolute;
    left:62px;
    top:39px;
    width:1098px;
    height:649px;
    z-index:1;
}
#myaddress {
    position:absolute;
    left:1185px;
    top:219px;
    width:286px;
    height:318px;
    z-index:2;
}
#apDiv1 {
    position:absolute;
    left:1189px;
    top:70px;
    width:264px;
    height:117px;
    z-index:3;
}
-->
</style>
</head>

<body onload="initialize()">



<div id="sbmr"></div>
<div id="myaddress">
<h2>My address:</h2>
<br />
</div>
<div id="apDiv1">
  <label>
    <input type="submit" name="button" id="button" value="Find Me" onclick="geocode()" />
  </label>
</div>
</body>
</html>

Upvotes: 0

Views: 1866

Answers (1)

Vlad Balmos
Vlad Balmos

Reputation: 3412

Geocoder encodes a string address into a LatLng object. instead of passing an object with the address you are passing a latlng object, which is wrong.

Change this:

geocoder.geocode(latlng, function(results, status) {...

with this:

geocoder.geocode({address: "type your address here"}, function(results, status) ...

UPDATE: if you are looking to do reverse geocoding (get address from latlng) checkout this link: http://code.google.com/apis/maps/documentation/javascript/services.html#ReverseGeocoding

Upvotes: 2

Related Questions