1
我試圖用自定義覆蓋圖替換Google地圖上的標記,以便爲每個標記提供HTML。它的工作原理除了我不知道如何讓覆蓋層的底部超過這一點,而不是將覆蓋層的頂部放在點之下。我已經使用超級簡化代碼(僅供測試)重現了錯誤(下文)。而不是我的實際HTML,我只是畫一個紅色的矩形。使用「底部」樣式定位Google地圖覆蓋圖
問題在於繪圖函數。當我將div.style.top分配到它的工作點(但不是我想要的方式)時,但是當我將它切換到div.style.bottom時,獲取y值而不是按預期方式工作;紅色方塊不在地圖上。 (在我的原始程序中,標記最終被繪製成垂直鏡像圖案,並且遠離被淹沒的位置。)
如何獲得指派div.style.bottom以按照我希望的方式工作?
<!DOCTYPE html>
<html>
<head>
<title>Custom Overlay Test</title>
<style>
html, body, #map-canvas {
height: 100%;
margin: 0px;
padding: 0px
}
</style>
<script src="https://maps.googleapis.com/maps/api/js"></script>
<script>
var overlay;
TestOverlay.prototype = new google.maps.OverlayView();
function initialize() {
var mapOptions = {
zoom: 11,
center: new google.maps.LatLng(38.89, -77.03)
};
var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
overlay = new TestOverlay(new google.maps.LatLng(38.89, -77.03), map);
}
function TestOverlay(point, map) {
this.point_ = point;
this.map_ = map;
this.div_ = null;
this.setMap(map);
}
TestOverlay.prototype.onAdd = function() {
var div = document.createElement('div');
div.style.borderStyle = 'solid';
div.style.borderWidth = '5px';
div.style.borderColor = '#ff0000';
div.style.position = 'absolute';
div.style.width = '200px';
div.style.height = '50px';
this.div_ = div;
var panes = this.getPanes();
panes.overlayLayer.appendChild(div);
};
TestOverlay.prototype.draw = function() {
var overlayProjection = this.getProjection();
var point = overlayProjection.fromLatLngToDivPixel(this.point_);
var div = this.div_;
div.style.left = point.x + 'px';
div.style.bottom = point.y + 'px';
};
TestOverlay.prototype.onRemove = function() {
this.div_.parentNode.removeChild(this.div_);
this.div_ = null;
};
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html>
嘗試'div.style.top = point.y-div.offsetHeight +'px';' –