2016-04-13 16 views
-1

Sorun şu ki, en az 20 sonuç döndüren bir Google Rehber radar araması gerçekleştiriyorum. Kodumda, arama sonuçlarının sayısını 20 ile sınırlandırıyorum. Bu yüzden, yerleştirilmiş google haritamda en fazla 20 markör olmalı (bu bölüm işe yarar) ve sonuç panelimdeki 20 konumun ilişkili listesi olmalıdır (bu yok). t çalışması). Ancak, sonuç panelinde sürekli olarak sadece 10 sonuç alıyorum.En az 20 olduğunda sadece 10 arama sonucu mu gösteriliyor? Google Rehber API'sini Kullanma

function addResult(place, i) { 
    var name; 
    var address; 

    var results = document.getElementById("results"); 

    service.getDetails({placeId: place.place_id}, function(result, status) { 
      if (status !== google.maps.places.PlacesServiceStatus.OK) { 
      return; 
      } 
      results.innerHTML += '<li>' + result.name + '</li>'; 
    }); 
} 

bazı hata ayıklama test ve için- yaptı: İşte

function getPlaces(placeQuery, locInput){ 
    var location = new google.maps.LatLng(locInput.geometry.location.lat(), locInput.geometry.location.lng()); 
    var queryValue = placeQuery.value; 
    var resultsLength; 

    var request = { 
     location: location, 
     radius: 3200, 
     keyword: queryValue   
    }; 

    service = new google.maps.places.PlacesService(map); 

    service.radarSearch(request, function callback(results, status) { 
     if(status == google.maps.places.PlacesServiceStatus.OK) { 
      clearMarkers(); 
      if(results.length < 20){ 
       resultsLength = results.length; 
      } 
      else{ 
       resultsLength = 20; 
      } 
      for (var i = 0; i < resultsLength; i++){ 

       var markerLetter = String.fromCharCode('A'.charCodeAt(0)+ i); 
       var markerIcon = MARKER_PATH + markerLetter + '.png'; 
       markers[i] = new google.maps.Marker({ 
        position: results[i].geometry.location, 
        animation: google.maps.Animation.DROP, 
        icon: markerIcon 
       }); 
       markers[i].placeResult = results[i]; 

       google.maps.event.addListener(markers[i], 'click', showInfoWindow); 
       setTimeout(dropMarker(i), i * 100); 

       addResult(results[i], i);     
      } 
     } 
    }); 
} 

benim addResult fonksiyonu olduğunu: İşte (onun asenkron beri) callback'inde radar arama ve addResult fonksiyonunu gerçekleştiren benim kodudur döngü tamamen yürütülür. Ancak, addResult işlevindeki service.getDetails öğesinde, yalnızca 10 yer kimliği geçiyor. Emin değilim neden ... Not: jQuery veya söz kitaplığı vb kullanamazsınız.

+0

bir [Minimal, test edilmiş, Tam ve Okunabilir örnek] veriniz (http://stackoverflow.com/help/mcve) sorununuzu gösterir. – geocodezip

cevap

0

.getDetails isteğine yapılan çağrılarda bir kota/ücret sınırı vardır. Sonuç "Tamam" değilse, hata işleme eklediyseniz ve sorunu görüyorsanız sessizce başarısız oluyorsunuz.

function addResult(place, i) { 
    var name; 
    var address; 

    var results = document.getElementById("results"); 

    service.getDetails({placeId: place.place_id}, function(result, status) { 
      if (status !== google.maps.places.PlacesServiceStatus.OK) { 
      results.innerHTML += '<li>'+ status + '</li>'; 
      } else { 
      results.innerHTML += '<li>' + result.name + '</li>'; 
      } 
    }); 
} 

(ya da tüm açılan iletişim kutuları tıklayarak sakıncası yoksa bir uyarı ekleyin)

İlgili konular