2011-02-10 13 views
9

Google Map(v3、3.4)APIのデフォルトコントロールを再配置する必要があります。同じ場所(つまりRIGHT_TOP)のGoogleマップコントロールの順序を変更する

すべてが所定の位置にあると動作しますが、私が追加したときにmapTypeControlzoomControlstreetViewControlと同じたControlPositionからpanControl(すなわちgoogle.maps.ControlPosition.RIGHT_TOP)、それらのレンダリング方法の順序を定義することはできません。

mapTypeControlがTOP_RIGHTのデフォルトがありますが、RIGHT_TOP(上記の他のもののデフォルト)に変更すると、この場所での底までのにそれを追加します。

google maps controls

ここでのコードですマップオプション(用事追加OSM層):

var mapOptions = { 
zoom: 12, 
center: def_center, // is set before this snippet  
mapTypeControl: true, 
mapTypeId: user_maptype, // is set before this snippet 
mapTypeControlOptions: { 
    position: google.maps.ControlPosition.RIGHT_TOP, 
    mapTypeIds: [google.maps.MapTypeId.ROADMAP, google.maps.MapTypeId.SATELLITE, google.maps.MapTypeId.HYBRID, google.maps.MapTypeId.TERRAIN, "openstreetmap"] 
}, 
zoomControl: true, 
zoomControlOptions: { 
    style: google.maps.ZoomControlStyle.DEFAULT, 
    position: google.maps.ControlPosition.RIGHT_TOP 
}, 
streetViewControl: true, 
streetViewControlOptions: { 
     position: google.maps.ControlPosition.RIGHT_TOP 
}, 
panControl: false, 
panControlOptions: { 
     position: google.maps.ControlPosition.RIGHT_TOP 
}, 
scaleControl: false, 
scaleControlOptions: { 
     position: google.maps.ControlPosition.BOTTOM_RIGHT 
} 
}; 

私は最初の電子であることをmapTypeControlが必要レンダリングされるレンダリング(streetViewControlの上)。どのようにこれを行うにはどのようなアイデア?

+2

あなたはこれを並べ替えるための解決策を見つけたことがありますか?私はカスタムコントロールを追加し、インデックス1/0で上または下に置くことができますが、デフォルトのコントロール(特にpanControl)のインデックスを更新することはできません – tester

答えて

4

このコードは、ソリューションがさらにindexプロパティは、ちょうど大多数のようsetAttributeを介して変更することができ代わりにRIGHT_TOP

TOP_RIGHTを使用していた最後にhttp://code.google.com/apis/ajax/playground/#control_position_v3

@ Googleのコードエディタで正常に動作しますその他のプロパティ。

function initialize() { 
    var mapDiv = document.getElementById('map-canvas'); 
    var map = new google.maps.Map(mapDiv, { 
     center: new google.maps.LatLng(37.4419, -122.1419), 
     zoom: 13, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     mapTypeControl: true, 
     mapTypeControlOptions: { 
     position: google.maps.ControlPosition.TOP_RIGHT 
     }, 
     zoomControl: true, 
     zoomControlOptions: { 
     style: google.maps.ZoomControlStyle.DEFAULT, 
     position: google.maps.ControlPosition.RIGHT_TOP 
     }, 
     streetViewControl: true, 
     streetViewControlOptions: { 
     position: google.maps.ControlPosition.RIGHT_TOP 
     }, 
     panControl: false, 
     panControlOptions: { 
     position: google.maps.ControlPosition.RIGHT_TOP 
     }, 
     scaleControl: false, 
     scaleControlOptions: { 
     position: google.maps.ControlPosition.BOTTOM_RIGHT 
     } 
    }); 
} 
+0

これはほとんどデフォルトレイアウトです。私はまだパンツールの上にmapTypeControlを取得できません。あなたがその事例を挙げたいなら、それは完璧です。 – andychase

+0

プレイグランドに行ってコードをペーストして実行した場合は、右上にマップタイプの選択が表示されているはずです。これは他のすべてのコントロールよりも優れています。スクリーンショットは何ですか? – Jay

+0

Jayによって提案されたハックは可能なアプリケーションでは制限されていますが(2つのグループのすべてのコントロールを分割して注文することができます)、間違いなく機能し、仕事を終わらせるかもしれません:)。 –

1

私は本当に解決策を持っていませんが、このページによれば Google Map API V3 Controlsユーザー定義のコントロールは、DOMのインデックスを変更することでデフォルトのコントロールの前に配置できます。これはズームコントロールの方がマップ/衛星コントロールよりもインデックスが小さいという同じ問題でしょうか?
インデックスをどのように変更するのかはっきりしていませんが、解決策を見つけるには道があるかもしれません。

あなたが解決方法を見つけたら、ここにあなたのソリューションを貼り付けてください。便利になるかもしれない。

関連する問題