8

私はapneadiving/Google-Maps-for-Railsでグーグルマップのサポートを追加しています(素晴らしい宝石に感謝します)

ただし、わずかな不具合が1つ見つかりました。これは、私のせいである可能性が非常に高いです。

auto_zoomは、複数のマーカーがある場合にうまく機能します。ただし、マーカーが1つしかない場合は、最大レベルにズームインされます。これはきれいではありません。

「zoom」はauto_zoomがfalseの場合にのみ機能するため、これは私が望んでいることではありません。

したがって、「maxZoom」を使用することはできますが、ユーザーはそのポイントを超えて手動でズームインすることはできません。これは私が望んでいることではありません。

これを回避する方法はありますか?私の説明は理にかなっていますか?これはGoogleMapsAPIの制限ですか?

ありがとう...

4

3 に答える 3

17

この動作はauto_zoom、グーグルマップAPIの組み込み関数によるものです。

falseこれを回避する1つの回避策は、gmapsメソッドで次のように設定することです。

<%= gmaps({
       "map_options" => { "auto_zoom" => false},
       "markers"     => { "data" => @json }
      })
%>

次に、を使用しgmaps4rails_callbackてニーズに合わせます(少なくともバージョン0.7.9があることを確認してください)

<script type="text/javascript" charset="utf-8">
  function gmaps4rails_callback() {
    if (Gmaps4Rails.markers.length == 1) {
     //only one marker, choose the zoom level you expect
     Gmaps4Rails.map.setZoom(2);
    }
    else{
     //more than one marker, let's auto_zoom
     Gmaps4Rails.map_options.auto_zoom = true;
     Gmaps4Rails.adjust_map_to_bounds();
    }
  }
</script>
于 2011-04-28T19:51:14.523 に答える
2

マップ上にマーカーが1つしかないことを知っているので、これは少し異なる方法で達成しました。私はRailsに比較的慣れていませんが、この方法は、JSを使用するよりも少し「クリーン」に感じます。

モデルにlatとlngが保存されている(作成時にgeokitによってエンコードされている)ので、私の見解では次のようになりました。

<%= gmaps({
       "map_options" => {"auto_zoom" => false, "zoom" => 15, "center_latitude" => @listing.lat, "center_longitude" => @listing.lng },
       "markers"     => {"data" => @markers }
      })
%>

@markersはblah.to_gmaps4railsによって作成された私のJSONであり、「listing」は私のモデルです。

于 2011-04-30T13:46:27.157 に答える
0

おかげでこれは私を助けました...

{"auto_zoom" => false、 "zoom" => 15、 "center_latitude" => @ listing.lat、 "center_longitude" => @ listing.lng}、 "markers" => {"data" => @markers} })%>
于 2013-06-27T04:19:11.770 に答える