-3

我试图将地理编码信息从 Schwartmecke 49, 57399 Kirchhundem, Germany 更改为 Schwartmecke 49, Germany ,但不知道如何。任何人都可以帮助我吗?谢谢

<script type="text/javascript">
  var map;
  var geocoder;
  var centerChangedLast;
  var reverseGeocodedLast;
  var currentReverseGeocodeResponse;

  function initialize() {
    var latlng = new google.maps.LatLng(49.624935522974546, 15.46877500000007);
    var myOptions = {
      zoom: 7,
      center: latlng,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    geocoder = new google.maps.Geocoder();


    setupEvents();
    centerChanged();
  }

  function setupEvents() {
    reverseGeocodedLast = new Date();
    centerChangedLast = new Date();

    setInterval(function() {
      if((new Date()).getSeconds() - centerChangedLast.getSeconds() > 1) {
        if(reverseGeocodedLast.getTime() < centerChangedLast.getTime())
          reverseGeocode();
      }
    }, 1000);

    google.maps.event.addListener(map, 'zoom_changed', function() {
      document.getElementById("zoom_level").innerHTML = map.getZoom();
    });

    google.maps.event.addListener(map, 'center_changed', centerChanged);

    google.maps.event.addDomListener(document.getElementById('crosshair'),'dblclick', function() {
       map.setZoom(map.getZoom() + 1);
    });

  }

  function getCenterLatText() {
    return '(' + map.getCenter().lat() +')';
  }   
    function getCenterLngText() {
    return '(' + map.getCenter().lng() +')';
  }   

  function centerChanged() {
    centerChangedLast = new Date();
    var lat = getCenterLatText(); 
    var lng = getCenterLngText();  
    document.getElementById('lat').innerHTML = lat;  
    document.getElementById('lng').innerHTML = lng; 
    document.getElementById('formatedAddress').value = '';
    currentReverseGeocodeResponse = null;
  }

  function reverseGeocode() {
    reverseGeocodedLast = new Date();
    geocoder.geocode({latLng:map.getCenter()},reverseGeocodeResult);
  }


  function reverseGeocodeResult(results, status) {
    currentReverseGeocodeResponse = results;
    if(status == 'OK') {
      if(results.length == 0) {
        document.getElementById('formatedAddress').value = 'None';
      } else {
        document.getElementById('formatedAddress').value = results[0].formatted_address;
      }
    } else {
      document.getElementById('formatedAddress').value = 'Error';
    }
  }


  function geocode() {
    var address = document.getElementById("address").value;
    geocoder.geocode({
      'address': address,
      'partialmatch': true}, geocodeResult);
  }

  function geocodeResult(results, status) {
    if (status == 'OK' && results.length > 0) {
      map.fitBounds(results[0].geometry.viewport);
    } else {
      alert("Geocode was not successful for the following reason: " + status);
    }
  }

  function addMarkerAtCenter() {
    var marker = new google.maps.Marker({
        position: map.getCenter(),
        map: map
    });


    if(currentReverseGeocodeResponse) {
      var addr = '';
      if(currentReverseGeocodeResponse.size == 0) {
        addr = 'None';
      } else {
        addr = currentReverseGeocodeResponse[0].formatted_address;
      }
      text = '<br>' + 'address: <br>' + addr;
    }

    var infowindow = new google.maps.InfoWindow({ content: text });


  }

</script>

希望我足够解释我的问题。

4

1 回答 1

0

在您的 reverseGeocodeResult() 函数中,您获取第一个结果并返回其“格式化地址”属性。不要返回这个,而是尝试浏览它的“address_components”属性。

在https://developers.google.com/maps/documentation/geocoding/#JSON查看更多信息

于 2012-12-17T19:44:32.227 回答