1

いいえ、上記の回答は私の質問に対する回答ではありません。これが異なるケースである理由を明確にするために、以下の私の更新を読んでください!!!

Google Maps API V3 を使用しています。このコードを書くとき:

map.fitBounds(map.getBounds());

地図がズームアウト!

fitBoundsすべてのエッジがマップに表示されるように、指定された境界をマップ上に表示することを保証するため、ドキュメントに従っていることを理解しています。したがって、私が探している答えは次のとおりです。

getBounds の結果を後でズーム効果なしで fitBounds に使用するように変更するにはどうすればよいですか?

基本的に、これはマップが行うことなので計算できると確信していますが、反対方向に、マージンを追加して、指定された境界を完全に表示します。これらの用語で、マージンを計算する方法 (したがって、fitBoundsから出力するための正しい入力を計算する方法getBounds) を教えてください。あなたの答えが受け入れられます。

前もって感謝します!

アップデート:

ズームとセンターの取得と設定が機能しません! 理由は次のとおりです。

マップのビューポート情報をデータベースに保持します。後で、マップを再作成して、まったく同じ場所をもう一度表示したいと考えています。ただし、マッピング プラットフォームはユーザーごとに異なる場合があります。したがって、ズームと中心は異なるマッピング プラットフォーム/フレームワーク間で標準ではなく、それらすべてで同じ結果を得るために使用することはできません。したがって、唯一の標準的な方法は、境界をデータベースに保持することです。したがって、質問には、求めている方向に正確に回答する必要があります。

4

2 に答える 2

1

境界の代わりにマップのズームと中心を保存し、後でこれらの値を復元します。

于 2013-10-26T20:44:28.533 に答える
0

私はまったく同じ問題を抱えていたので、getBounds() の結果のバウンディング ボックスを 15% 縮小することにしました。それは私にとってうまくいきます:

var neLat = map.getBounds().getNorthEast().k;
var neLong = map.getBounds().getNorthEast().B;
var swLat = map.getBounds().getSouthWest().k;
var swLong = map.getBounds().getSouthWest().B;

var boundingBoxPerc = 0.15;
var mapWidth = neLong - swLong;
var mapHeight = neLat - swLat;

var ne = new google.maps.LatLng(neLat - mapHeight * boundingBoxPerc, neLong - mapWidth * boundingBoxPerc);
var sw = new google.maps.LatLng(swLat + mapHeight * boundingBoxPerc, swLong + mapWidth * boundingBoxPerc);
map.fitBounds(new google.maps.LatLngBounds(sw, ne));
于 2014-07-08T20:43:45.320 に答える