如何从纬度和经度中找到确切的位置详细信息?

时间:2016-03-11 17:46:48

标签: google-maps google-maps-api-3

我尝试使用Google Maps API进行反向地理编码'通过提供经度和纬度获得位置。这给出了街道地址,城市和国家信息。但是我需要获取建筑物名称,商店名称等确切的详细信息。例如,在查询坐标时,#Maps; 72.9011206,19.0517508",Google Maps API提供了#34; 5号地块,VN Purav Marg,Borla,Union Park,Chembur,Mumbai,Maharashtra 400071,India"。但我需要得到商店的名称" Barista Lavazza"正如“谷歌地球”中所提供的那样。对于相同的坐标细节。

1 个答案:

答案 0 :(得分:0)

一种选择是使用Google Maps Javscript API Places library nearbySearch,在返回的结果中搜索最接近请求位置的结果。

proof of concept fiddle

代码段



var map;
var infowindow;
var searchLoc = new google.maps.LatLng(19.0517508, 72.9011206);

function initialize() {
  map = new google.maps.Map(
    document.getElementById("map_canvas"), {
      center: searchLoc,
      zoom: 18,
      mapTypeId: google.maps.MapTypeId.ROADMAP
    });
  infowindow = new google.maps.InfoWindow();
  var request = {
    location: searchLoc,
    radius: '50'
  };

  service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
}

function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    var bounds = new google.maps.LatLngBounds();
    var distMin = Number.MAX_VALUE;
    var idxMin = -1;
    for (var i = 0; i < results.length; i++) {
      var place = results[i];
      bounds.extend(results[i].geometry.location);
      var distance = google.maps.geometry.spherical.computeDistanceBetween(results[i].geometry.location, searchLoc);

      if (distance < distMin) {
        distMin = distance;
        idxMin = i;
      }
    }

    var marker = createMarker(results[idxMin]);
    google.maps.event.trigger(marker, 'click');
  }
}

function createMarker(place) {
  var placeLoc = place.geometry.location;
  var marker = new google.maps.Marker({
    map: map,
    position: place.geometry.location
  });

  google.maps.event.addListener(marker, 'click', function() {
    infowindow.setContent("<h2 style='color:blue'>"+place.name + "</h2><br>" + place.vicinity + "<br>" + marker.getPosition().toUrlValue(7));
    infowindow.open(map, this);
  });
  return marker;
}
google.maps.event.addDomListener(window, "load", initialize);
&#13;
html,
body,
#map_canvas {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
&#13;
<script src="https://maps.googleapis.com/maps/api/js?libraries=geometry,places"></script>
<div id="map_canvas"></div>
&#13;
&#13;
&#13;