Сейчас я разрабатываю карту для небольшого кампуса в Google Maps API v3.
Я хочу, чтобы моя карта отображала слои в следующем порядке (снизу вверх):
0 [Google Maps layer (all labels turned off)]
1 [buildings, parking lots, detailed streets and paths]
2 [additional details (trees)]
3 [highlighted parking lots (toggled on/off)]
4 [highlighted buildings (toggled on/off)]
5 [transparent (street-)labels from google maps]
6 [transparent custom (building-)labels]
7 [markers]
8 [info windows]
Я уже довольно далеко, но я застрял здесь: слои 1, 2, 5 и 6 - это new google.maps.ImageMapType
слои с плитками, добавленные так:
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
map.overlayMapTypes.insertAt(0, myMapLayer);
map.overlayMapTypes.insertAt(0, myTreeLayer);
map.overlayMapTypes.insertAt(1, googleLabelLayer);
map.overlayMapTypes.insertAt(1, myLabelLayer);
map.setOptions({styles: stylesArray});
Слои 3 и 4слои FusionTables с полигонами, добавляются следующим образом:
parkingLayer = new google.maps.FusionTablesLayer(#######);
buildingLayer = new google.maps.FusionTablesLayer(#######);
и переключаются флажком:
function toggleLayer(layer) {
if(layer.getMap() == null) {
layer.setMap(map);
} else {
layer.setMap(null);
}
}
Но слои FusionTables (3 и 4) всегда находятся над моими слоями надписей (5 и 6), когда они должны быть внизу.
Слои FusionTables выделяют цвета зданий, чтобы их было лучше видно, а надписи обозначают названия зданий.Если слой FusionTables включен, полигоны покрывают метки, поэтому название здания исчезает.Установка непрозрачности до 50% работает пока, но не оптимально.
Я также выяснил, что OverlayView
имеет правильную позицию (вверху карты, поверх слоя fusiontables, под маркерами и информационными окнами).Но я мог использовать только статическое изображение, но не нашел возможности заставить работать здесь плитки.
Поэтому мой вопрос:
Есть ли способ наложить плиточные слои поверх слоев FusionTables?