0

API V3 を使用して Google マップを埋め込んでいますが、デフォルトのズームを 1 以外に設定できません。

頭の中の私のJSは次のとおりです。

            var map1;
            var src1 = 'https://latitude.google.com/latitude/apps/badge/api?user=8963899225283336226&type=kml';
            function initialize1() {
                map1 = new google.maps.Map(document.getElementById('map-canvas'), {
                zoom: 7,
                mapTypeId: google.maps.MapTypeId.TERRAIN
              });
              loadKmlLayer1(src1, map1);
            } 

            google.maps.event.addDomListener(window, 'load', initialize1);

            function loadKmlLayer1(src1, map1) {
              var kmlLayer1 = new google.maps.KmlLayer(src1, {
                suppressInfoWindows: false,
                clickable: true,
                preserveViewport: false,
                map: map1
              });
            }

HTML は単なる map-canvas div であり、他には何もありません。ここのスレッドのいくつかを見ると、ビューポートの検出と境界のリセットに関係しているように見えます。

次のようなものを追加することを提案するスレッドを見つけました。

            google.maps.event.addListener(kmlLayer1, 'defaultviewport_changed', function() {
            var bounds = kmlLayer1.getDefaultViewport();
            map.setCenter(bounds.getCenter());
            })

しかし、違いはありませんでした。私は決して JS の専門家ではありません。上記のほとんどのコードで何が起こっているかはほとんど理解していますが、即席でコードを作成したり、どこに配置すべきかを理解したりするほどの知識はありません。

4

2 に答える 2

2

ありがとうモール。

私はこれに拡張し、それは動作します:

google.maps.event.addListener(kmlLayer, 'status_changed', function () {
  console.log('kml loaded:');
  google.maps.event.addListenerOnce(map, 'zoom_changed', function () {
    console.log('zoom_changed:');
    map.setZoom(7);
    map.setCenter(new google.maps.LatLng(0, 0));
  });
});
于 2013-11-20T20:53:48.470 に答える
1

API は、ズーム設定をオーバーライドするすべての KML 機能を含むようにビューポートを設定します。

ズームが変更されたらズームをリセットします (KML レイヤーが読み込まれたときと同様)。

google.maps.event.addListenerOnce(map1, 'zoom_changed', function() {
  this.setZoom(7);
})
于 2013-04-10T21:39:00.963 に答える