2016-03-17 3 views
-1

Я хотел бы видеть интересные объекты в восстановлении со слайдера, но я чувствую, что радиус свойства не учитывается. Когда я пытаюсь изменить значение, я вижу изменение, но это не очень хороший результат. Радиус в метрах? Вы можете мне помочь? спасибо заранееРадиус игнорируется google maps API

var radius = 50; 
 
$(document).ready(function(){ 
 
    $('#range-input').on('change', function(evt, range) { 
 
     radius = $(this).val(); 
 
     $('#range-output').val($(this).val() + "m"); 
 
    }); 
 
}); 
 
var infowindow; 
 
var latU; 
 
var lngU; 
 
var distance; 
 
var motCle; 
 
function initMap() { 
 
    var mapOptions = { 
 
     zoom:12, 
 
     scaleControl: true, 
 
     streetViewControl: true, 
 
     zoomControl: true, 
 
     zoomControlOptions: { 
 
      style: google.maps.ZoomControlStyle.SMALL, 
 
      position: google.maps.ControlPosition.RIGHT_CENTER 
 
     }, 
 
     mapTypeId: google.maps.MapTypeId.ROADMAP 
 
    } 
 
    geocoder = new google.maps.Geocoder(); 
 
    infowindow = new google.maps.InfoWindow(); 
 
    if (navigator.geolocation) 
 
     navigator.geolocation.getCurrentPosition(successCallback, 
 
      null, 
 
      {enableHighAccuracy:true}); 
 
    else 
 
     alert("Votre navigateur ne prend pas en compte la géolocalisation, activez la localisation et réessayer"); 
 
    function successCallback(position){ 
 
     var distance = radius+'m'; 
 
     var motCle = $('#motCle').val; 
 
     latU = position.coords.latitude ; 
 
     lngU = position.coords.longitude; 
 
     map.panTo(new google.maps.LatLng(position.coords.latitude, position.coords.longitude)); 
 
     var myLatLng = new google.maps.LatLng(latU, lngU); 
 
     var marker = new google.maps.Marker({ 
 
      position: new google.maps.LatLng(position.coords.latitude, position.coords.longitude), 
 
      map: map, 
 
      name: 'Vous êtes ici', 
 
      title: 'Vous êtes ici' 
 
     }); 
 

 
     google.maps.event.addListener(marker, 'click', function() { 
 
      infowindow.setContent(marker.name); 
 
      infowindow.open(map, this); 
 
     }); 
 
     var requestNearby = { 
 
      location: myLatLng, //Paramètre de l'endroit ou se trouve la personne 
 
      radius: distance, 
 
      types: ['shopping_mall', 'grocery_or_supermarket'], 
 
      openNow: true 
 
     }; 
 

 

 
     service = new google.maps.places.PlacesService(map); 
 
     service.nearbySearch(requestNearby, callbackNearby); 
 

 
     function callbackNearby(results, status) { 
 
      if (status == google.maps.places.PlacesServiceStatus.OK) { 
 
       for (var i = 0; i < results.length; i++) { 
 
        var place = results[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); 
 
      }); 
 
     }} 
 

 
    map = new google.maps.Map(document.getElementById("map"), mapOptions); 
 
} 
 
$('#searchform').submit(function(e){ 
 
    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); 
 
     }); 
 
    } 
 
    //alert('sa marche !'); 
 
    e.preventDefault(); 
 
    var myLatLng; 
 
    console.log(radius); 
 
    $.ajax({ 
 
     method : $(this).attr('method'), 
 
     url : $(this).attr('action'), 
 
     data : $(this).serialize(), 
 
     dataType: 'json' 
 
    }).done(function(data){ 
 
     if(data.success){ 
 
      if(navigator.geolocation) { 
 
       navigator.geolocation.getCurrentPosition(function (position) { 
 
        var latU = position.coords.latitude; 
 
        var lngU = position.coords.longitude; 
 
        myLatLng = new google.maps.LatLng(latU, lngU); 
 
        console.log(myLatLng); 
 
        serviceSearch = new google.maps.places.PlacesService(map); 
 
        var requestText = { 
 
         location: myLatLng, 
 
         radius: radius, 
 
         query: data['message'], 
 
         openNow: true 
 
        }; 
 
        serviceSearch.textSearch(requestText, callbackText); 
 
        function callbackText(results, status) { 
 
         if (status == google.maps.places.PlacesServiceStatus.OK) { 
 
          for (var i = 0; i < results.length; i++) { 
 
           var place = results[i]; 
 
           createMarker(results[i]); 
 
          } 
 
         } 
 
        } 
 
       }); 
 
      } 
 
     } else { 
 
      alert('sa ne fonctionne pas correctement!'); 
 
     } 
 
    }); 
 
    return false; 
 
});
<div class="row"> 
 
           <div class="col-xs-6"> 
 
            <div class="range"> 
 
             <input type="range" id="range-input" name="range" min="1000" max="20000" value="1000"> 
 
             <output id="range-output">1000m</output> 
 
            </div> 
 
           </div> 
 
          </div> 
 
         </div>

ответ

0

Из документации на radius должен быть номер, который является расстояние в метрах; этот var distance = radius+'m'; делает его строкой.

радиус | Тип: номер Расстояние от данного места, в котором можно искать Места, в метрах. Максимально допустимое значение составляет 50 000.