谷歌地图API找到我附近的餐馆

时间:2016-03-26 13:36:57

标签: javascript asp.net api google-maps

我正在使用谷歌地图api [这是我在附近的餐厅找到的。 。 。当我运行它时,我只获得当前位置。我没有收到任何与餐馆数据有关的信息。

  function initMap() {
      var map = new google.maps.Map(document.getElementById('map'), {
          center: { lat: 25.276987, lng: 55.296249 },
          zoom: 15
      });

      var infoWindow = new google.maps.InfoWindow({ map: map });

      if (navigator.geolocation) {
          navigator.geolocation.getCurrentPosition(function (position) {

              var pos = {
                  lat: position.coords.latitude,
                  lng: position.coords.longitude     
              };
              infoWindow.setPosition(pos);
              infoWindow.setContent('Location found.');
              map.setCenter(pos);
              var marker = new google.maps.Marker({
                  map: map,
                  position: pos.getPlace().location
              });
              var service = new google.maps.places.PlacesService(map);
              service.nearbySearch({
                  location: rak,
                  radius: 5500,
                  type: ['restuarant']
              }, callback);

          }, function () {
              handleLocationError(true, infoWindow, map.getCenter());
          });
      }
      else {            
          handleLocationError(false, infoWindow, map.getCenter());
      }
  }

1 个答案:

答案 0 :(得分:13)

也许您在使用nearbySearch位置标记时遇到错误。你没有启动变量rak,它将返回一个空值。

设置脚本

<script
    src="https://maps.googleapis.com/maps/api/js?key=API_KEY&libraries=places&callback=initMap"
    async defer></script>

初始化变量

var map;
var infowindow;
var myPlace = {lat: 25.276987, lng: 55.296249 };

调用nearBySearch

var service = new google.maps.places.PlacesService(map);
            service.nearbySearch({
                location : myPlace,
                radius : 5500,
                type : [ 'restaurant' ]
            }, callback);

检查搜索结果,然后为每个找到的位置创建标记

function callback(results, status) {
            if (status === google.maps.places.PlacesServiceStatus.OK) {
                for (var i = 0; i < results.length; i++) {
                    createMarker(results[i]);
                }
            }
        }

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(place.name);
                infowindow.open(map, this);
            });
        }

您可以在此document中找到此代码,它将很好地解释正确的编码以及如何使用api。这里还有list of supported location type

我希望这会有所帮助。