Why is my reverse geocoding not working and displaying?

心不动则不痛 提交于 2019-12-02 16:13:23

问题


I have a nearby search map, in every open of this map page, it returns the current position, now When I get the current position by coordinates, I want to reverse geocode it into an address name, the problem is I modified my code from this source: https://developers-dot-devsite-v2-prod.appspot.com/maps/documentation/javascript/examples/geocoding-reverse

with

<script>
function getPosition() {
  navigator.geolocation.getCurrentPosition(position => {
    currentLatLon = [position.coords.latitude, position.coords.longitude];
    infowindow = new google.maps.InfoWindow();
    map = new google.maps.Map(
      document.getElementById('map'), {
        center: new google.maps.LatLng(...currentLatLon),
        zoom: 20
      });
      var geocoder = new google.maps.Geocoder();       
    service = new google.maps.places.PlacesService(map);
    document.getElementById("curr").innerHTML=currentLatLon;
    document.getElementById("address").value=currentLatLon;
    geocodeLatLng(geocoder,map,infowindow);
  });
}

 function geocodeLatLng(geocoder, map, infowindow) {
        var input = document.getElementById('curr').value;
        var latlngStr = input.split(',');
        var latlng = {lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1])};
        geocoder.geocode({'location': latlng}, function(results, status) {
          if (status === 'OK') {
            if (results[0]) {
              map.setZoom(11);
              var marker = new google.maps.Marker({
                position: latlng,
                map: map
              });
              infowindow.setContent(results[0].formatted_address);
              infowindow.open(map, marker);
            } else {
              window.alert('No results found');
            }
          } else {
            window.alert('Geocoder failed due to: ' + status);
          }
        });
      }
    </script>

this should return the place name in the map which is like the source code I copied from above https://developers-dot-devsite-v2-prod.appspot.com/maps/documentation/javascript/examples/geocoding-reverse, what could be wrong in my modification? I have an error in the console when I run my modified code, error in the console

Here's my full code without the api key: https://pastebin.com/BhEqRsq0


回答1:


You set the lat/lng coordinates to the <p> element's innerHTML, not to its (unsupported) value which is why it returns undefined:

document.getElementById("curr").innerHTML = currentLatLon;

So change this code:

var input = document.getElementById('curr').value;

to the following:

var input = document.getElementById('curr').innerHTML;

I just ran your web app on my end and reverse geocoding works fine after the above fix. So hope this helps!



来源:https://stackoverflow.com/questions/58066256/why-is-my-reverse-geocoding-not-working-and-displaying

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!