靠近搜索功能,Java脚本

时间:2015-12-07 23:56:11

标签: javascript html google-maps

目前正在寻找我所在地区的当地餐馆,我正在使用附近的搜索功能,它没有生效,因为结果只是将我当前的位置带回模拟器,这里是我对附近搜索功能的看法(我使用当前位置作为我的纬度和经度)

function initialize() {
    navigator.geolocation.getCurrentPosition(function(position) {
        latlng = new google.maps.LatLng(currentLatitude, currentLongitude);

        _map = new google.maps.Map(document.getElementById('map'), {
            center: latlng,
            zoom: 15
        });
    });  

    var request = {
        location: latlng,
        radius: '500',
        query: ['restaurant']
    };
}

var infowindow = new google.maps.InfoWindow();
var service = new google.maps.places.PlacesService(_map);
//service.nearbysearch(request, callback);

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

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

对不起所有问题并感谢您的帮助,但搜索仍未显示,只显示我所在的位置。我有两行包含在我的html文件中

<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyA8QR7tvuRAV6SkXwLlBsQbAxBAnhuzxMA&libraries=places"></script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=AIzaSyA8QR7tvuRAV6SkXwLlBsQbAxBAnhuzxMA&sensor=true"></script>

,我正在使用地理位置模板在英特尔XDK上开发此功能

1 个答案:

答案 0 :(得分:0)

地理定位服务是异步的,您必须在其回调的时间/时间内使用其内部的数据。

var infowindow = new google.maps.InfoWindow();
var service = new google.maps.places.PlacesService(_map);

function initialize() {
    navigator.geolocation.getCurrentPosition(function(position) {
        var latlng = new google.maps.LatLng(position.coords.latitude, position.coords.longitude);

        _map = new google.maps.Map(document.getElementById('map'), {
            center: latlng,
            zoom: 15
        });
        // call the places service where/when the latlng variable exists.
        var request = {
            location: latlng,
            radius: '500',
            query: ['restaurant']
        };
        service.nearbysearch(request, callback);
    });  
}

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

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