javascript 获取谷歌地图的可见部分,并将中心主标记设置为可见部分的中心
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript 获取谷歌地图的可见部分,并将中心主标记设置为可见部分的中心相关的知识,希望对你有一定的参考价值。
function getVisibleHeight($element) {
var $el = $element,
scrollTop = $(this).scrollTop(),
scrollBot = scrollTop + $(this).height(),
elTop = $el.offset().top,
elBottom = elTop + $el.outerHeight(),
visibleTop = elTop < scrollTop ? scrollTop : elTop,
visibleBottom = elBottom > scrollBot ? scrollBot : elBottom;
return visibleBottom - visibleTop;
}
function getPixelOffsetMap(map, marker) {
// Calculate marker position in pixels form upper left corner
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)
);
return pixelOffset;
};
google.maps.event.addListener(map, "idle", function() {
var pixelOffsetMarker = getPixelOffsetMap(map, mainMarker);
var mapVisibleHeight = getVisibleHeight($('#' + mapElementId));
// console.log(pixelOffset);
console.log(mapVisibleHeight);
console.log(pixelOffsetMarker);
if(pixelOffsetMarker.y > mapVisibleHeight && mapVisibleHeight > 0) {
console.log('qqq');
map.panBy(Math.abs(pixelOffsetMarker.x),
Math.abs(mapVisibleHeight / 2));
}
// Do the pan
map.panBy(Math.abs(pixelOffset.x - mapOfset.left),
Math.abs(pixelOffset.y - mapOfset.top));
//
// google.maps.event.removeListener(listener);
});
以上是关于javascript 获取谷歌地图的可见部分,并将中心主标记设置为可见部分的中心的主要内容,如果未能解决你的问题,请参考以下文章
从谷歌地图API位置搜索框的示例中获取坐标? [重复]
如何使用javascript在谷歌地图中的多个标记之间绘制路线图
JavaScript 谷歌地图 - 使用Javascript获取移动设备的路线
谷歌地图(javascript API):从地址获取 GPS 坐标
在谷歌地图javascript api中 - 如何移动地图而不是标记
谷歌地图-通过Javascript在移动设备上获取方向