2013-07-12 9 views
1

Я использую google map v3 javascript api, и я пытаюсь создать пользовательский тип карты в соответствии с руководством по google.develper.пользовательский maptype с несколькими слоями

Однако я обнаружил, что тип карты предоставляет только один слой, в то время как мой пользовательский тип карты должен обеспечивать два слоя, как google.maps.MapTypeId.HYBRID, который содержит два слоя - SATELLITE и .

Так что я задаюсь вопросом, возможно ли это?

BWT, я задал вопрос о maptype и слоях here.

Кажется, что тип карты состоит из слоев, это правда?


Фактически, мой первый вопрос решается на Michael Geary.

Однако теперь я встречаю новые проблемы, так как он по-прежнему связан с пользовательским типом maptype, поэтому я обновляю этот пост, а не создаю новый вопрос.

Q2:

Как насчет MapTypeControl, если у меня есть больше, чем один слой?

Как вы можете видеть, google.maps.mapTypeId.HYBRID имеют два уровня - спутник и метки.

Так в управлении MapType вы найдете это:

enter image description here

Обратите внимание на Labels флажок.

Теперь у меня есть два слоя для моих пользовательских карт - base и labels, как сделать слой labels можно переключить?

ответ

1

Пользовательский тип карты определяет элемент DOM для каждой плитки, as described here. Этот элемент DOM не ограничивается только одним изображением. У вас может быть <div> с любым количеством изображений и других элементов, вложенных в него.

Гибридный тип карты реализован с использованием этого подхода. Вот скриншот инспектора Chrome DOM показывает одну карту плитки в гибридном вид со спутника:

Hybrid map tile DOM elements

Как вы можете видеть, <div> имеет два <img> детей. Первый, обслуживаемый с khms0.googleapis.com, является базовым спутниковым изображением плитки. Второй, поданный от mts0.googleapis.com, - это наклейки и рамки с надписью с прозрачным фоном. Это всего лишь один тип карты в отношении API Карт: API знает только о контейнере <div>, а не о изображениях внутри него.

base map example в разделе Base Map Types в части документации показано использование элементов <div> в качестве плитки карты. Вы можете использовать это как отправную точку и добавить свои <img> плитки внутри <div>.

+0

Замечательно !.Я никогда не находил этого. Это означает, что я могу переопределить 'google.maps.MapType' скорее' google.maps.ImageMapType', а затем создать элемент плитки (dom) вручную? Кстати, как насчет слоев? – hguser

+0

Правильно, вы использовали бы базу «MapType». «ImageMapType» предназначен для простого случая, когда у вас есть одно изображение для каждой плитки. Я думаю, что «слои», о которых вы спрашивали в другом вопросе, - это [Типы карт Overlay] (https://developers.google.com/maps/documentation/javascript/maptypes?hl=ru-ru). Это прозрачный слой MapType, который вы хотите применить к базовому MapType. Это отдельный MapType, поэтому его можно применять к различным типам базовых карт. Это отличается от одного типа карты, который имеет внутренние слои, такие как гибридная карта. –

+0

Хотя я говорю «слои», я не имею в виду «оверлейные типы карт», я имею в виду слои (https://developers.google.com/maps/documentation/javascript/layers?hl=en-us). Поскольку кажется, что все эти слои состоят из плиток, то в чем разница между слоями и типами наложения? – hguser