Данное решение не сработало для меня, потому что вышележащий div создает мертвую точку на карте.Лучшим решением для моего проекта с использованием JavaScript API Карт Google V3 было создание сетки на карте в виде маркера с прямоугольной формой в 1 пиксель.Затем используйте событие maps bounds_changed, чтобы перецентрировать маркер.
Изображение сетки имеет размер 63 x 63 png.(images / reticle.png)
Определение изображения и формы маркера ...
var reticleImage = new google.maps.MarkerImage(
'images/reticle.png', // marker image
new google.maps.Size(63, 63), // marker size
new google.maps.Point(0,0), // marker origin
new google.maps.Point(32, 32)); // marker anchor point
var reticleShape = {
coords: [32,32,32,32], // 1px
type: 'rect' // rectangle
};
После создания нашей карты (main_map) мы добавляем маркер ...
reticleMarker = new google.maps.Marker({
position: latlng,
map: main_map,
icon: reticleImage,
shape: reticleShape,
optimized: false,
zIndex: 5
});
Здесь var latlng - это тот же объект LatLng, который использовался для создания main_map.Значение zIndex должно быть больше, чем у любого другого маркера zIndex, чтобы прицельная сетка находилась сверху.
Затем мы добавляем обработчик события, который вызывается при срабатывании карты bounds_changed.наконец, у нас есть функция centerReticle ().
function centerReticle(){
reticleMarker.setPosition(main_map.getCenter());
}
Поскольку мы не делаем ничего с событием bounds_changed, мы можем привести в порядок код, передав анонимную функцию в вызов addListener ...Это избавляет нас от необходимости определять функцию centerReticle ().
google.maps.event.addListener(main_map, 'bounds_changed',
function(){reticleMarker.setPosition(main_map.getCenter());});
Это на самом деле работает довольно гладко.Надеюсь, это поможет другим.
Спасибо.
Пропустить