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在移动设备上获取方向