2016-04-13 3 views
-1

問題少なくとも20の結果を返すGoogleプレイスレーダー検索を実行しています。私のコードでは、検索結果の数を20に制限しています。埋め込まれたGoogleマップ(この部分は動作します)に最大20個のマーカーがあり、結果パネルに20個の場所が関連付けられています(これは、 t仕事)。しかし、結果パネルでは10の結果しか得られません。ここに私のコードは(その非同期以降)コールバックでレーダーの検索やaddResult機能を実行している:少なくとも20件ある場合、レンダリングは10件の検索結果しかありませんか? Google Places APIの使用

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

はここに私のaddResult機能である:

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

私はいくつかのデバッグテストとFOR-をしましたループが完全に実行されています。しかし、addResult関数のservice.getDetailsでは、10個のプレースIDのみが処理されます。理由はわかりません...注:jQueryや約束のライブラリなどを使用することはできません。

+0

[、最小コンプリート、テストおよび読み取り可能な例]を提供してください(http://stackoverflow.com/help/mcve)を参照してください。 – geocodezip

答えて

0

.getDetailsリクエストへのコールにはクォータ/レート制限があります。結果が「OK」でなければ、あなたは黙って失敗しています。エラー処理を追加すると、問題が表示されます。

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

(またはあなたがすべてのポップアップダイアログボックスをクリックする気にしない場合に警告を追加する)

関連する問題