当您单击“查找我”按钮时,它会找到您的位置,但问题出在地理编码部分。

它应该在“ myaddress” div中显示您的位置地址。但这给了我不明白的错误。

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

最佳答案

Geocoder将字符串地址编码为LatLng对象。而不是传递带有地址的对象,而是传递latlng对象,这是错误的。

更改此:

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


有了这个:

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


更新:
如果您要进行反向地理编码(从latlng获取地址),请查看以下链接:
http://code.google.com/apis/maps/documentation/javascript/services.html#ReverseGeocoding

关于javascript - 对地理位置进行地理编码会在Google map 上显示错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7946527/

10-12 07:03