2011-02-10 3 views
9

Google지도 (v3, 3.4) API의 기본 컨트롤을 다시 정렬해야합니다.Google지도 컨트롤의 순서를 같은 위치 (예 : RIGHT_TOP)로 변경하십시오.

모든 장소에 있고 작동하지만 내가 추가 할 때 MapTypeControl은, zoomControl은 streetViewControl과 같은 ControlPosition은소그룹을 (즉 google.maps.ControlPosition.RIGHT_TOP) 렌더링 순서를 정의 할 수 없습니다.

여기 google maps controls

이에 대한 코드입니다 :

MapTypeControl은이 위치에서 아래로의에게 추가 TOP_RIGHT의 기본이 있지만을 변경하면 (위에서 언급 한 다른 사람의 기본을) RIGHT_TOP하기 지도 옵션 (신경 끄시 추가 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

다른 속성.

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

제이가 제안한 해킹은 가능한 응용 프로그램에서 제한되어 있지만 (두 그룹의 모든 컨트롤을 나눠서 순서를 설정할 수 있기 때문에) 확실히 작동하며 작업을 완료 할 수 있습니다 :). –

1

나는 실제로 해결책을 가지고 있지 않지만이 페이지에 따르면 Google Map API V3 Controls 사용자 정의 컨트롤은 DOM에서 인덱스를 변경하여 기본값보다 먼저 배치 할 수 있습니다. 줌 제어가지도/위성 제어보다 낮은 색인을 갖는 것은 동일한 문제일까요?
색인을 변경하는 방법에 대해 잘 모르지만 해결책을 찾는 방법 일 수 있습니다.

아, 해결 방법을 찾으면 여기에 해결책을 붙여주세요. 편리 할거야.

이 코드는 솔루션 단지의 대부분처럼 index 속성이 setAttribute 통해 변경할 수 있습니다 또한 대신 RIGHT_TOP

TOP_RIGHT를 사용하는 것이었다 결국 http://code.google.com/apis/ajax/playground/#control_position_v3

@ 구글 코드 편집기에서 잘 작동

관련 문제