Геокодирование геолокации дает ошибку на Google Maps - PullRequest
0 голосов
/ 30 октября 2011

Когда вы нажимаете кнопку «Найти меня», он находит ваше местоположение, но проблема заключается в части геокодирования.

Он должен показывать адрес вашего местоположения внутри div "myaddress".Но это дает ошибку, которую я не понял.

<!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>

1 Ответ

2 голосов
/ 30 октября 2011

Геокодер кодирует строковый адрес в объекте LatLng. вместо передачи объекта с адресом вы передаете объект latlng, что неправильно.

Изменить это:

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

с этим:

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

UPDATE: если вы хотите сделать обратное геокодирование (получить адрес от latlng), проверьте эту ссылку: http://code.google.com/apis/maps/documentation/javascript/services.html#ReverseGeocoding

...