如何检查自定义工具提示的左上角是否适合地图边界? 我正在使用下面的代码,但有些东西是不正确的,因为'myLatLng'永远不会在地图范围内。感谢您的帮助。
var scale = Math.pow(2, map.getZoom());
var nw = new google.maps.LatLng(
map.getBounds().getNorthEast().lat(),
map.getBounds().getSouthWest().lng()
);
var worldCoordinateNW = map.getProjection().fromLatLngToPoint(nw);
var worldCoordinate = map.getProjection().fromLatLngToPoint(marker.getPosition());
var pixelOffset = new google.maps.Point(
Math.floor((worldCoordinate.x - worldCoordinateNW.x) * scale),
Math.floor((worldCoordinate.y - worldCoordinateNW.y) * scale)
);
var myLatLng = map.getProjection().fromPointToLatLng(pixelOffset);
if (map.getBounds().contains(myLatLng)) {
// it's within bounds
}
答案 0 :(得分:1)
您的代码中存在语法错误和拼写错误:
if (map.getBounds().countains(myLatLng) {
// it's within bounds
}
应该是
if (map.getBounds().contains(myLatLng)) {
// it's within bounds
}
答案 1 :(得分:0)
我解决了,这是我使用的解决方案。
var proj = map.getProjection();
var bounds = map.getBounds();
var scale = Math.pow(2, map.getZoom());
var anchorPoint = proj.fromLatLngToPoint(marker.getPosition());
// tlc == top left corner (of tooltip)
var tlcPoint = new google.maps.Point(
(anchorPoint.x * scale) / scale,
((anchorPoint.y * scale) - marker.getIcon().size.height - tooltip.getHeight()) / scale
);
var tlcLatLng = proj.fromPointToLatLng(tlcPoint);
if ( ! bounds.contains(tlcLatLng) ) {
bounds.extend(tlcLatLng);
map.fitBounds(bounds);
}