检查自定义工具提示的左上角是否在边界内

时间:2013-09-25 12:27:17

标签: google-maps google-maps-api-3

如何检查自定义工具提示的左上角是否适合地图边界? 我正在使用下面的代码,但有些东西是不正确的,因为'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
}

2 个答案:

答案 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);
}