10

Google Maps JavaScript API v3 を使用して、1 つの場所の検索リクエストで複数の個々のキーワードを検索することは可能ですか?

Google Places API ドキュメントには、複数のキーワードを使用できると記載されています https://developers.google.com/places/training/additional-places-features

?keyword=theater+gym

しかし、これは JavaScript API では機能しません。私は試した:

function performSearch() {
  var request = {
    location: map.center,
    radius: '500',
    keyword: 'theater+gym+tacos',
    rankBy: 'distance'
  };
  service.radarSearch(request, callback);
}

...各キーワードの場所は返されません。複数のキーワードを検索する方法を知っている人はいますか?

注:スペースを含むフレーズではなく、1 つのリクエストで複数の個々のキーワードを検索しようとしています。

4

6 に答える 6

11

答えは「いいえ」のようです (少なくとも現時点では、Issue tracker の機能強化をリクエストできます。

回避策は、キーワードごとに 1 つずつ、3 つの個別のクエリを送信することです。3 つのキーワードについては問題ありませんが、ある時点でクエリのレート制限に達します。

  var request = {
    location: pyrmont,
    radius: 500,
    keyword: 'theater'
  };
  infowindow = new google.maps.InfoWindow();
  var service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
  var request2 = {
    location: pyrmont,
    radius: 500,
    keyword: 'gym'
  };
  var service2 = new google.maps.places.PlacesService(map);
  service2.nearbySearch(request2, callback);
  var request3 = {
    location: pyrmont,
    radius: 500,
    keyword: 'tacos'
  };
  var service3 = new google.maps.places.PlacesService(map);
  service3.nearbySearch(request2, callback);

コンセプトの証明

コードスニペット:

var map;
var infowindow;

function initialize() {
  var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316);

  map = new google.maps.Map(document.getElementById('map-canvas'), {
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    center: pyrmont,
    zoom: 15
  });

  var request = {
    location: pyrmont,
    radius: 500,
    keyword: 'theater'
  };
  infowindow = new google.maps.InfoWindow();
  var service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
  var request2 = {
    location: pyrmont,
    radius: 500,
    keyword: 'gym'
  };
  var service2 = new google.maps.places.PlacesService(map);
  service2.nearbySearch(request2, callback);
  var request3 = {
    location: pyrmont,
    radius: 500,
    keyword: 'tacos'
  };
  var service3 = new google.maps.places.PlacesService(map);
  service3.nearbySearch(request2, callback);
}

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

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

google.maps.event.addDomListener(window, 'load', initialize);
html,
body,
#map-canvas {
  height: 100%;
  width: 100%;
  margin: 0px;
  padding: 0px
}
<script src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk&libraries=places"></script>
<div id="map-canvas"></div>

于 2013-11-02T20:50:49.547 に答える
7

Google place API を使用して、ブール検索を行うと、次のように動作するようです。

var request = {
            location: /*your location*/,
            radius: /*your radius*/,              
            keyword: "(cinema) OR (theater)"           
        };

OR、ANDを使用できますが、大文字と小文字を区別してください!!

于 2014-05-28T12:13:12.080 に答える
3

編集:これは最初は機能しているように見えましたが、より多くの結果は信頼できず、予測できませんでした。このシナリオでは、この方法で API を使用することができなくなりました。

Web サービスを使用していますが、すべての API アクセス ポイントで動作するはずです。テストするのにかなりの数の組み合わせが必要でしたが、最終的に、複数の単語の OR 条件を機能させるには、API に括弧と引用符が必要であることに気付きました。

たとえば、url パラメータ形式では次のようになります。

キーワード=("地名1") OR ("地名2") OR ("地名3")

于 2015-10-06T18:01:26.493 に答える
1

type オプションで試しましたか。type を使用すると、複数の場所情報を取得できます

サポートされている可能性のあるタイプを参照してください。RadarSearchRequestsは次の ように試行します。

function performSearch() {
  var request = {
    location: map.center,
    radius: '500',
    types: ['movie_theater', 'gym'],
    rankBy: 'distance'
  };
  service.radarSearch(request, callback);
}

「タコス」がどのタイプかわかりません。サポートされているタイプとその「タコス」タイプの値を指定してください。

問題がある場合はお知らせください

于 2013-11-08T04:43:48.043 に答える