Перейти на этот демонстрационный веб-сайт: http://easysublease.org/mapcoverjs/
Для контекстного меню я не предлагаю реализовывать один подкласс класса overlayView, предоставляемый API Карт Google. Во-первых, один экземпляр подкласса overlayView
должен быть добавлен к пяти панелям, предоставленным Google. Скорее всего, нужно добавить этот экземпляр на панель overlayMouseTarget
.
Но , этот экземпляр "затенен" другими домами над ним. Поэтому обычное исходное событие браузера, такое как mouseover
, mouseout
, не может достичь этого экземпляра.
Нужно использовать метод Google Maps API: addDomListener
, чтобы справиться с этим ( почему? ). Требуется много кода JavaScript для реализации различных обработчиков событий, много добавлений и удалений классов CSS, чтобы реализовать некоторые визуальные эффекты, что можно сделать, используя несколько строк кода CSS , если этот экземпляр находится за пределами карты. контейнер.
Таким образом, на самом деле преобразование одного внешнего dom вне контейнера карты Google в одно контекстное меню имеет то преимущество, что он может получать оригинальные события DOM из браузера. Также использование некоторой внешней библиотеки может заставить цель вести себя лучше. Как контекстное меню, оно должно быть способным обрабатывать не только исходные события, но и события из Map.
----------- см. Варианты реализации ниже ------------------------
В части HTML карты это код:
<div id="mapcover">
<div id="mapcover-map"></div> <!-- this is map container-->
<div id="demoControlPanel" class="mc-static2mapcontainer panel">I am map UI control button's container, I think one can use jQuery UI to make me look better<br><br>
<div id="zoom-in-control" class="text-center">zoomIn</div>
<div id="zoom-out-control" class="text-center">zoomOut</div>
</div>
<div id="demoContextPanel" class="mc-ascontextmenu panel">
I am map context menu container, you can sytle me and add logic to me, just as normal DOM nodes.
since I am not in Map Container at all!
<div class="text-center">
<div role="group" aria-label="..." class="btn-group">
<button id="place-marker1" type="button" class="btn btn-default">Marker1</button>
<button id="place-marker2" type="button" class="btn btn-default">Marker2</button>
</div>
</div>
<div class="form-group">
<label for="content-marker1">Content of next Marker1</label>
<input id="content-marker1" type="text" placeholder="New of Marker1!" class="form-control">
</div>
</div>
</div>
Он показывает, как один разработчик может преобразовать один внешний DOM (id = demoContextPanel) в одно контекстное меню карты, просто добавив один класс CSS ".mc-ascontextmenu"!
На этих страницах используется mapcover.js, который помогает разработчику управлять некоторыми ключевыми компонентами Map, такими как пользовательские интерфейсы управления картой, контекстное меню и настраиваемые маркеры. Тогда разработчики имеют полную свободу в оформлении интерфейсов своих карт.
Если вам нужно больше, вы можете перейти на его Github, см. Readme.md: https://github.com/bovetliu/mapcover