1

私のグーグルマップAPIマップズームは、グーグルプレイス検索後に追加されたすべてのマーカーを表示するために配置されました。モバイルマップでは、ロードに少し時間がかかる場合があります。このサイクリスト向けアプリとして、ビューポート内にのみ結果を表示することを好みます。私が読んだほとんどの調査によると、ビューポート内でのみ結果を返すことはできません。マーカーが追加された後、マップの境界が変更されないようにすることはできますか?返されるマーカーが1つだけでない限り、現在の境界に追加されたマーカーが表示されるだけであれば、そのマーカーにズームする必要があります。したがって、ピザのような一般的なものを検索すると、パンやズームを行わなくても、現在のビューポートに多くのピザの場所が表示されます。特定のアドレスを検索すると、ビューポートの外にある場合でも、そのマーカーにズームします。

 var input = document.getElementById('target');
 var searchBox = new google.maps.places.SearchBox(input);
 var bounds = map.getBounds();
 searchBox.setBounds(bounds);
 var markers = [];
 service = new google.maps.places.PlacesService(map);

 google.maps.event.addListener(searchBox, 'places_changed', function() {
     var places = searchBox.getPlaces();
     // alert("getPlaces returns "+places.length+" places");

     for (var i = 0; i < gmarkers.length; i++) {
       gmarkers[i].setMap(null);
     }

     gmarkers = [];
     var bounds = new google.maps.LatLngBounds();

     for (var i = 0, place; place = places[i]; i++) {
       var place = places[i];
       createMarker(place);
       bounds.extend(place.geometry.location);
     }
     map.fitBounds(bounds);
     // if (markers.length == 1) map.setZoom(17);
   });

   google.maps.event.addListener(map, 'bounds_changed', function() {
     var bounds = map.getBounds();
     searchBox.setBounds(bounds);
   });

   ib = new InfoBox({});
4

1 に答える 1

2

あなたの質問への答え:

  • マーカーが追加された後、マップの境界が変更されないようにすることは可能ですか?

はいです。そして、あなたが言うように、map.fitBoundsを削除する必要があります。

地図を中央に配置して単一の住所を拡大するには、そのためのジオコーダーを使用するか(個別に実装)、結果の数を確認します。結果が1つである場合は、地図を結果の中央に配置し、ビューポートが提案されているかどうかを確認します。結果として、それを使用してマップを中央に配置してズームします[map.fitBounds(place.geometry.viewport)を使用すると思います]。

于 2012-12-01T12:32:49.663 に答える