如何从经度和纬度获取当前位置名称?

时间:2017-11-24 09:27:38

标签: javascript html google-maps

我使用此代码通过google maps api获取用户的当前位置,我以纬度和经度的形式获取位置并获取LatLng变量中的位置。

但在那之后,当我将纬度和经度转换为地址时,它就不起作用了。

if(navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function (p){
var LatLng = new google.maps.LatLng(p.coords.latitude,p.coords.longitude);
    alert(LatLng);
    alert(p.coords.latitude);
    alert(p.coords.longitude);
    var mapOptions = {
         center: LatLng,
         zoom: 13,
         mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({ 'LatLng': LatLng }, function (results, status){
        alert(geocoder);   
        if (status == google.maps.GeocoderStatus.OK){
             if (results[1]){
                 alert("Location: " + results[1].formatted_address);
             }
        }
});

2 个答案:

答案 0 :(得分:0)

首先,正如评论员帕克所说,jsp和java标签与你的帖子无关。我删除了它。

您应该进行反向地理编码。 执行相反的过程,将地图上的位置转换为人类可读的地址,称为反向地理编码。

请参阅以下谷歌地图网址Reverse Geocoding

请参阅下面的映射lat& amp;局域网,

 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);
    }

如果有帮助,请告诉我。

答案 1 :(得分:0)

 $(document).ready(function() {
     var currgeocoder;

     //Set geo location  of lat and long

     navigator.geolocation.getCurrentPosition(function(position, html5Error) {

         geo_loc = processGeolocationResult(position);
         currLatLong = geo_loc.split(",");
         initializeCurrent(currLatLong[0], currLatLong[1]);

    });

    //Get geo location result

   function processGeolocationResult(position) {
         html5Lat = position.coords.latitude; //Get latitude
         html5Lon = position.coords.longitude; //Get longitude
         html5TimeStamp = position.timestamp; //Get timestamp
         html5Accuracy = position.coords.accuracy; //Get accuracy in meters
         return (html5Lat).toFixed(8) + ", " + (html5Lon).toFixed(8);
   }

    //Check value is present or not & call google api function

    function initializeCurrent(latcurr, longcurr) {
         currgeocoder = new google.maps.Geocoder();
         console.log(latcurr + "-- ######## --" + longcurr);

         if (latcurr != '' && longcurr != '') {
             var myLatlng = new google.maps.LatLng(latcurr, longcurr);
             return getCurrentAddress(myLatlng);
         }
   }

    //Get current address

     function getCurrentAddress(location) {
          currgeocoder.geocode({
              'location': location

        }, function(results, status) {

            if (status == google.maps.GeocoderStatus.OK) {
                console.log(results[0]);
                $("#address").html(results[0].formatted_address);
            } else {
                alert('Geocode was not successful for the following reason: ' + status);
            }
        });
     }
});

</script>